<!doctype html>

<html lang="ru">
<head>
    
        
            <!-- Varioqub experiments -->

<!-- Replaced by script below -->
<!--
<script type="text/javascript">
(function(e, x, pe, r, i, me, nt){
e[i]=e[i]||function(){(e[i].a=e[i].a||[]).push(arguments)},
me=x.createElement(pe),me.async=1,me.src=r,nt=x.getElementsByTagName(pe)[0],nt.parentNode.insertBefore(me,nt)})
(window, document, 'script', 'https://abt.s3.yandex.net/expjs/latest/exp.js', 'ymab');
ymab('metrika.92705395', 'init'/*, {clientFeatures}, {callback}*/);
</script>
-->


<!-- In fact is script above, but loads faster -->
<script async src="https://abt.s3.yandex.net/expjs/latest/exp.js"></script>
<script type="text/javascript">
    window.ymab = window.ymab || function(){
        (window.ymab.a = window.ymab.a || []).push(arguments);
    };

    ymab('metrika.92705395', 'init'/*, {clientFeatures}, {callback}*/);
</script>
        
    
    <meta charset="UTF-8"/>

    
    <meta name="viewport" content="width=device-width,initial-scale=1"/>
    

    

    <title>PVS-Studio | Публикации: статьи </title>
    <meta name="description" content="Статьи от разработчиков статического анализатора кода PVS-Studio на C, C++, C# и Java. А также переведенные статьи других авторов. Узнать про статический анализ, инструменты статического анализа и плюсы работы со статическими анализаторами.">

    
        <meta property="og:title" content="PVS-Studio | Публикации: статьи "/>
        <meta property="og:description" content="Статьи от разработчиков статического анализатора кода PVS-Studio на C, C++, C# и Java. А также переведенные статьи других авторов. Узнать про статический анализ, инструменты статического анализа и плюсы работы со статическими анализаторами."/>
        <meta property="og:image" content="https://cdn.pvs-studio.ru/static/images/placeholders/11_blog_post_video_thm_intoblank_1200x630.png"/>
        <meta property="og:image:width" content="1200"/>
        <meta property="og:image:height" content="630"/>
        <meta property="og:image:type" content="image/png"/>
        <meta property="og:image:alt" content="PVS-Studio | Публикации: статьи "/>
        <meta property="og:url" content="https://pvs-studio.ru/ru/blog/posts/"/>
        <meta property="og:site_name" content="PVS-Studio"/>
        <meta property="og:locale" content="ru_RU">

        <meta name="twitter:card" content="summary_large_image"/>
        <meta name="twitter:title" content="PVS-Studio | Публикации: статьи "/>
        <meta name="twitter:description" content="Статьи от разработчиков статического анализатора кода PVS-Studio на C, C++, C# и Java. А также переведенные статьи других авторов. Узнать про статический анализ, инструменты статического анализа и плюсы работы со статическими анализаторами."/>
        <meta name="twitter:image:alt" content="PVS-Studio | Публикации: статьи "/>
        <meta name="twitter:image" content="https://cdn.pvs-studio.ru/static/images/placeholders/11_blog_post_video_thm__-x-.png"/>
        <meta name="twitter:site" content="@code_analysis"/>
        <meta name="twitter:creator" content="@code_analysis"/>

        <meta property="vk:image" content="https://cdn.pvs-studio.ru/static/images/placeholders/11_blog_post_video_thm_intoblank_537x240.png"/>

        
            <meta property="og:type" content="website"/>
        

        
    


    
        <link rel="alternate" href="https://pvs-studio.ru/ru/blog/posts/" hreflang="ru" />
        <link rel="alternate" href="https://pvs-studio.com/en/blog/posts/" hreflang="en" />
        

        <link rel="canonical" href="https://pvs-studio.ru/ru/blog/posts/" />
    

    <script>
      const LANG = 'ru';
      window.CDN = 'https://cdn.pvs-studio.ru';
    </script>

    

    
        <script src="https://cdn.pvs-studio.ru/static/vite/js/modal.js?ver=675" type="module"></script>
    

    
        <script src="https://cdn.pvs-studio.ru/static/jquery.min.js"></script>
    

    


    
    <link rel="preload" href="https://cdn.pvs-studio.ru/static/fonts/OpenSans-Regular.woff2" as="font" crossorigin="anonymous" />
    <link rel="preload" href="https://cdn.pvs-studio.ru/static/fonts/OpenSans-Semibold.woff2" as="font" crossorigin="anonymous" />
    <link rel="preload" href="https://cdn.pvs-studio.ru/static/fonts/OpenSans-Italic.woff2" as="font" crossorigin="anonymous" />
    <link rel="preload" href="https://cdn.pvs-studio.ru/static/fonts/OpenSans-Bold.woff2" as="font" crossorigin="anonymous" />
    

    <style>
        @font-face {
          font-family: 'Open Sans';
          src: url("https://cdn.pvs-studio.ru/static/fonts/OpenSans-Bold.woff2");
          font-weight: bold;
          font-display: block !important;
        }
        @font-face {
          font-family: 'Open Sans';
          src: url("https://cdn.pvs-studio.ru/static/fonts/OpenSans-Italic.woff2");
          font-style: italic;
          font-display: block !important;;
        }
        @font-face {
          font-family: 'Open Sans';
          src: url("https://cdn.pvs-studio.ru/static/fonts/OpenSans-Regular.woff2");
          font-display: block !important;;
        }
        @font-face {
          font-family: 'Open Sans';
          src: url("https://cdn.pvs-studio.ru/static/fonts/OpenSans-Semibold.woff2");
          font-weight: 600;
          font-display: block !important;;
        }
        @font-face {
            font-family: 'Open Sans';
            src: url("https://cdn.pvs-studio.ru/static/fonts/OpenSans-Light.woff2");
            font-weight: 300;
            font-display: block !important;;
        }
    </style>

    <link rel="icon" href="https://cdn.pvs-studio.ru/static/favicon.ico" type="image/x-icon">

    
        <style>
            @font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA') format('woff');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-container-multirow>.swiper-wrapper{flex-wrap:wrap}.swiper-container-multirow-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-container-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-container-pointer-events{touch-action:pan-y}.swiper-container-pointer-events.swiper-container-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-container-3d{perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-container-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(-1 * var(--swiper-navigation-size)/ 2);z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;text-transform:none;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-container-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-container-rtl .swiper-button-prev:after{content:'next'}.swiper-button-next.swiper-button-white,.swiper-button-prev.swiper-button-white{--swiper-navigation-color:#ffffff}.swiper-button-next.swiper-button-black,.swiper-button-prev.swiper-button-black{--swiper-navigation-color:#000000}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:50%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white{--swiper-pagination-color:#ffffff}.swiper-pagination-black{--swiper-pagination-color:#000000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;animation:swiper-preloader-spin 1s infinite linear;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-container-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;-webkit-filter:blur(50px);filter:blur(50px)}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
        </style>

        <script src="https://cdn.pvs-studio.ru/static/swiper.min.js"></script>
    

    
        <script src="https://cdn.pvs-studio.ru/static/vite/js/indexPage.js?ver=675" defer type="module"></script>
    
    
    
        <link href="https://cdn.pvs-studio.ru/static/style.css?ver=675" rel="stylesheet">
    

    <script defer="defer" src="https://cdn.pvs-studio.ru/static/main.js?ver=675"></script>

    
        
        <script defer="defer" src="https://cdn.pvs-studio.ru/static/vite/js/tippy.js?ver=675"></script>
        <link href="https://cdn.pvs-studio.ru/static/vite/css/tooltip.css?ver=675" rel="stylesheet">
        <link href="https://cdn.pvs-studio.ru/static/vite/css/includes_purged.css?ver=675" rel="stylesheet">
    

    <link href="https://cdn.pvs-studio.ru/static/vite/css/bootstrap_purged.css?ver=675" rel="stylesheet">

    
    

    
        
            <script>
(function () {
  setTimeout(function(){

function removeParametersFromUrl(url, parameters) {
  let urlObj = new URL(url);
  let searchParams = urlObj.searchParams;

  parameters.forEach(param => {
    searchParams.delete(param);
  });

  urlObj.search = searchParams.toString();
  return urlObj.toString();
}
    const parametersToRemove = ["url", "_ga",  "promo", "id",
                         "utm_id", "utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"];
    const rightPath = removeParametersFromUrl(window.location, parametersToRemove);
    if (removeParametersFromUrl(window.location, []) !== rightPath){
      window.history.replaceState({}, '', rightPath);
    }
}, 2000);
})();
</script>
        
            <meta name="yandex-verification" content="86d71794a0cca355" />
        
            <!-- Yandex.Metrika counter -->
<script type="text/javascript" >
   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
   m[i].l=1*new Date();
   for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
   k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

   ym(92705395, "init", {
        clickmap:true,
        trackLinks:true,
        accurateTrackBounce:true,
        webvisor:true
   });
</script>
<noscript><div><img data-no-crawl src="https://mc.yandex.ru/watch/92705395" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
        
            <meta name="google-site-verification" content="BlZo-2dgH5fvNGj_0ukzVz9CqPC1zG-_sIAM3zm0sng" />
        
    

</head>
<body>




    <style>
        .personalDataConfirmWrapper .personalDataConfirm .text {padding: 10px 0;}
        .personalDataConfirmImage {position: absolute; left: 15px; bottom: 0; display: none;}

        @media (min-width: 992px) {
            .personalDataConfirmWrapper {padding: 0;}
            .personalDataConfirmWrapper .pvs-button {max-width: 220px;margin-left: auto;}
            .personalDataConfirmWrapper .personalDataConfirm .text {padding: 26px 0;}

            .personalDataConfirmImage {display: block;}
        }
    </style>
    <div class="personal-data-confirm">
        <div class="personalDataConfirmWrapper" style="position: fixed;
     bottom: 0;
     left: 0;
     z-index: 999;
     width: 100%;
     min-width: 320px;
     border-top: 5px solid #01a8e5;
     background-color: #414f57;
     color: #fff;
     font-size: 18px;
     line-height: 25px;
     padding: 10px 0;">
            <div class="personalDataConfirm container relative">
                <img
                    class="personalDataConfirmImage"
                    style="display: none"
                    src="data:,"
                    data-src="https://cdn.pvs-studio.ru/static/images/unicorns/unicorn-cookie.png"
                    alt="Unicorn with delicious cookie"
                    width="160"
                    height="180"
                    loading="lazy"
                >
                <script>
                    let details = navigator.userAgent;
                    let regexp = /android|iphone|kindle|ipad/i;
                    let isMobileDevice = regexp.test(details);
                    if (!isMobileDevice && window.innerWidth >= 1024) {
                        let img = document.querySelector('.personalDataConfirmImage');
                        img.setAttribute('src', img.getAttribute('data-src'));
                        img.style.display = 'block';
                    }
                </script>
                <div class="row">
                    
                        <div class="col-12 col-lg-6 offset-lg-3">
                            <div class="text">
                                Мы <a href="https://pvs-studio.ru/ru/privacy-policy/" target="_blank">используем куки</a>, чтобы пользоваться сайтом
                                было&nbsp;удобно.
                            </div>
                        </div>
                        <div class="col-12 col-lg-3">
                            <div class="text">
                                <div class="pvs-button i_agree_button" data-test-id="cookie_pd_agreement">Хорошо</div>
                            </div>
                        </div>
                    
                </div>
            </div>
        </div>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', function() {

        document.querySelector('.personalDataConfirm .i_agree_button').addEventListener('click',
            function () {
                fetch('/api/i_agree/', {
                    method: 'POST'
                })
                .then(data => {
                    const personalDataConfirm = document.querySelector('.personal-data-confirm');
                    if (personalDataConfirm) {
                        personalDataConfirm.remove();
                    }
                });

                setTimeout(() => {
                    const ruLangOfferElem = document.querySelector("#ru-lang-offer");
                    if (!ruLangOfferElem) {
                        return;
                    }

                    ruLangOfferElem.classList.add("visible");
                }, 3000);
            });
        });
    </script>





        
    

<div class="b-totop"><img src="https://cdn.pvs-studio.ru/static/images/icons/arrows/to_the_top.png" alt="to the top" width="107" height="55"></div>


    

<header class="header header-outer" data-lang="ru">
    
    
    <div class="header-info" data-webinar-id="42">
        <div class="container | relative">
            <div class="pe-4">
                <div class="row row-cols-auto justify-content-center text-center">
                    <div class="col">
                        <p class="fw-semi-bold">Вебинар: Зачем тестировщику нужна безопасность? - 15.04</p>
                    </div>
                    <div class="col">
                        <a class="no-style text-decoration-underline" href="https://pvs-studio.ru/ru/webinar/">Зарегистрироваться</a>
                    </div>
                </div>
            </div>

            <button id="dont-show-webinar" data-webinar-id="42">
                <svg class="img-fluid" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <g id="system icon">
                        <path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M3.9959 2.54955C3.5965 2.15015 2.94895 2.15015 2.54955 2.54955C2.15015 2.94895 2.15015 3.5965 2.54955 3.9959L10.5536 12L2.54955 20.0041C2.15015 20.4035 2.15015 21.0511 2.54955 21.4504C2.94895 21.8498 3.5965 21.8498 3.9959 21.4504L12 13.4464L20.0041 21.4504C20.4035 21.8498 21.0511 21.8498 21.4504 21.4504C21.8498 21.0511 21.8498 20.4035 21.4504 20.0041L13.4464 12L21.4504 3.9959C21.8498 3.5965 21.8498 2.94895 21.4504 2.54955C21.0511 2.15015 20.4035 2.15015 20.0041 2.54955L12 10.5536L3.9959 2.54955Z" fill="#fff" fill-opacity="1"/>
                    </g>
                </svg>
            </button>
        </div>
    </div>
    

    <div class="header-inner" data-nav="secondary">
        <div class="container">
            <nav class="header-nav" data-nav="secondary">
                <ul>
                    <li>
                        
                            <a 
                                href="https://pvs-studio.ru/ru/about-feedback/"
                                onclick="ym(92705395,'reachGoal','header_support_to_writetous')"
                                data-metric-tag="header-support-to-writetous">
                                Поддержка
                            </a>
                        
                    </li>

                    <li data-type="lang">
                        <p class="h-100 | d-flex align-items-center" data-dropdown-title="header-lang">Ru</p>

                        <div 
                            data-dropdown-content="header-lang" 
                            data-dropdown-position-x="center"
                            
                            >
                            <ul class="dropdown-list" data-nav="secondary">
                                
                                    <li><a href="https://pvs-studio.com/en/blog/posts/" data-no-crawl rel="nofollow" data-state="inactive">English</a></li>
                                

                                
                                    <li><p data-state="disabled">Français</p></li>
                                

                                
                            </ul>
                        </div>
                    </li>

                    <li data-type="personal-account">
                        <p data-dropdown-title="header-pa">
                            <img src="https://cdn.pvs-studio.ru/static/images/icons/user_pa.svg" alt="User icon" width="32" height="32">
                        </p>

                        <div 
                            data-dropdown-content="header-pa" 
                            data-dropdown-position-x="right"
                            data-type="personal-account"
                            data-dropdown-preserve>
                            <ul class="dropdown-list | cabinet_actions" data-nav="secondary">
                                
                                    <li>
                                        <a href="/login/?next=/ru/blog/posts/" rel="nofollow" data-test="pa-login" data-no-crawl>Авторизоваться</a>
                                    </li>
                                    <li>
                                        <a href="/login/?register=true&next=/ru/blog/posts/" data-test="pa-reg" rel="nofollow" data-no-crawl>Зарегистрироваться</a>
                                    </li>
                                
                            </ul>
                        </div>
                    </li>

                    <li data-type="search">
                        <form 
                            action="https://pvs-studio.ru/ru/search/" id="header-search-form" class="d-flex align-items-center"
                            onsubmit="ym(92705395,'reachGoal','new_search_header')"
                            data-metric-tag="form-new-search-header"
                            data-test-exclude-start-disable>
                            <div 
                                id="header-search-wrapper" 
                                class="search-wrapper | me-1 | anime-appear-width" 
                                style="width: 170px;"> 
                                <input 
                                    type="search" 
                                    name="search"
                                    value=""
                                    placeholder="Поиск"
                                    class="input" 
                                    data-type="header-search"> 
                            </div>

                            <button 
                                type="submit" role="submit" 
                                class="no-style" 
                                title="Поиск"
                                data-anime-target="#header-search-wrapper">
                                <img src="https://cdn.pvs-studio.ru/static/images/icons/search.svg" alt="Search button" width="18" height="18">
                            </button>
                        </form>
                    </li>
                </ul>
            </nav>
        </div>
    </div>

    <div class="header-inner" data-nav="primary">
        <div class="container | relative">
            <nav class="header-nav" data-nav="primary">
                
                    <a class="header-logo" href="https://pvs-studio.ru/ru/">
                        <img src="https://cdn.pvs-studio.ru/static/images/logo/pvs_logo_4.svg" alt="PVS-Studio logo: cool unicorn" width="70" height="45">
                    </a>
                

                <ul class="header-nav-links">
                    
                    <li>
                        <p data-dropdown-title="nav-links-1">
                            <a 
                                href="https://pvs-studio.ru/ru/pvs-studio/" class="no-style" link-title
                                onclick="ym(92705395,'reachGoal','header_clickmenu')"
                                data-metric-tag="a-header-clickmenu">
                                Анализатор</a>
                            <span class="d-none" no-link-title>Анализатор</span>
                        </p>
                        <script>
                            if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
                                document.querySelectorAll('[data-dropdown-title]').forEach(item => {
                                  const link = item.querySelector('[link-title]');
                                  const touchElement = item.querySelector('[no-link-title]');
                                  
                                  if (link && touchElement) {
                                    link.classList.add('d-none');
                                    touchElement.classList.remove('d-none');
                                  }
                                });
                              } 
                        </script>
                        <div data-dropdown-content="nav-links-1" data-dropdown-position-x="left" data-dropdown-offset="15">
                            <ul class="dropdown-list" data-nav="primary">
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/" class="no-style">О PVS-Studio</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/download/" class="no-style">Скачать PVS-Studio</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/whatsnew/" class="no-style">Что нового в 7.42</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/faq/" class="no-style">FAQ</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/gost-71207/" class="no-style">ГОСТ Р 71207–2024</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/fstec/" class="no-style">Сертификация ФСТЭК</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/sast/" class="no-style">SAST (CWE, OWASP, MISRA)</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/pvs-studio/examples/" class="no-style">Online Examples</a>
                                        
                                    </li>
                                
                            </ul>
                        </div>
                    </li>
                    
                    <li>
                        <p data-dropdown-title="nav-links-2">
                            <a 
                                href="https://pvs-studio.ru/ru/docs/" class="no-style" link-title
                                onclick="ym(92705395,'reachGoal','header_clickmenu')"
                                data-metric-tag="a-header-clickmenu">
                                Документация</a>
                            <span class="d-none" no-link-title>Документация</span>
                        </p>
                        <script>
                            if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
                                document.querySelectorAll('[data-dropdown-title]').forEach(item => {
                                  const link = item.querySelector('[link-title]');
                                  const touchElement = item.querySelector('[no-link-title]');
                                  
                                  if (link && touchElement) {
                                    link.classList.add('d-none');
                                    touchElement.classList.remove('d-none');
                                  }
                                });
                              } 
                        </script>
                        <div data-dropdown-content="nav-links-2" data-dropdown-position-x="left" data-dropdown-offset="15">
                            <ul class="dropdown-list" data-nav="primary">
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/docs/" class="no-style">Общая документация</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/docs/warnings/" class="no-style">Диагностические правила</a>
                                        
                                    </li>
                                
                            </ul>
                        </div>
                    </li>
                    
                    <li>
                        <p data-dropdown-title="nav-links-3">
                            <a 
                                href="https://pvs-studio.ru/ru/order/" class="no-style" link-title
                                onclick="ym(92705395,'reachGoal','header_clickmenu')"
                                data-metric-tag="a-header-clickmenu">
                                Лицензия</a>
                            <span class="d-none" no-link-title>Лицензия</span>
                        </p>
                        <script>
                            if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
                                document.querySelectorAll('[data-dropdown-title]').forEach(item => {
                                  const link = item.querySelector('[link-title]');
                                  const touchElement = item.querySelector('[no-link-title]');
                                  
                                  if (link && touchElement) {
                                    link.classList.add('d-none');
                                    touchElement.classList.remove('d-none');
                                  }
                                });
                              } 
                        </script>
                        <div data-dropdown-content="nav-links-3" data-dropdown-position-x="left" data-dropdown-offset="15">
                            <ul class="dropdown-list" data-nav="primary">
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/order/" class="no-style">Покупка лицензии</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/order/license/" class="no-style">Выбор лицензии</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/for-clients/" class="no-style">Для клиентов</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/order/for-students/" class="no-style">Для студентов</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/order/open-source-license/" class="no-style">Для Open Source</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/order/mvp/" class="no-style">Для Microsoft MVP</a>
                                        
                                    </li>
                                
                            </ul>
                        </div>
                    </li>
                    
                    <li>
                        <p data-dropdown-title="nav-links-4">
                            <a 
                                href="https://pvs-studio.ru/ru/blog/posts/" class="no-style" link-title
                                onclick="ym(92705395,'reachGoal','header_clickmenu')"
                                data-metric-tag="a-header-clickmenu">
                                Блог</a>
                            <span class="d-none" no-link-title>Блог</span>
                        </p>
                        <script>
                            if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
                                document.querySelectorAll('[data-dropdown-title]').forEach(item => {
                                  const link = item.querySelector('[link-title]');
                                  const touchElement = item.querySelector('[no-link-title]');
                                  
                                  if (link && touchElement) {
                                    link.classList.add('d-none');
                                    touchElement.classList.remove('d-none');
                                  }
                                });
                              } 
                        </script>
                        <div data-dropdown-content="nav-links-4" data-dropdown-position-x="left" data-dropdown-offset="15">
                            <ul class="dropdown-list" data-nav="primary">
                                
                                    <li>
                                        
                                        <p class="clr-neutral-300">Блог</p>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/video/" class="no-style">Видео</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/books/" class="no-style">Книги</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/training/" class="no-style">Центр обучений</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/quest/" class="no-style">Развлечения</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/events/" class="no-style">Мероприятия</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/inspections/" class="no-style">Проверенные проекты</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/examples/" class="no-style">Примеры ошибок</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/terms/" class="no-style">Терминология</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/blog/lessons/" class="no-style">64-битные уроки</a>
                                        
                                    </li>
                                
                            </ul>
                        </div>
                    </li>
                    
                    <li>
                        <p data-dropdown-title="nav-links-5">
                            <a 
                                href="https://pvs-studio.ru/ru/about/" class="no-style" link-title
                                onclick="ym(92705395,'reachGoal','header_clickmenu')"
                                data-metric-tag="a-header-clickmenu">
                                О компании</a>
                            <span class="d-none" no-link-title>О компании</span>
                        </p>
                        <script>
                            if ('ontouchstart' in window || navigator.maxTouchPoints > 0) {
                                document.querySelectorAll('[data-dropdown-title]').forEach(item => {
                                  const link = item.querySelector('[link-title]');
                                  const touchElement = item.querySelector('[no-link-title]');
                                  
                                  if (link && touchElement) {
                                    link.classList.add('d-none');
                                    touchElement.classList.remove('d-none');
                                  }
                                });
                              } 
                        </script>
                        <div data-dropdown-content="nav-links-5" data-dropdown-position-x="left" data-dropdown-offset="15">
                            <ul class="dropdown-list" data-nav="primary">
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/about/" class="no-style">История</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/about/customers/" class="no-style">Клиенты</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/about/careers/" class="no-style">Вакансии</a>
                                        
                                    </li>
                                
                                    <li>
                                        
                                        <a href="https://pvs-studio.ru/ru/address/" class="no-style">Контакты</a>
                                        
                                    </li>
                                
                            </ul>
                        </div>
                    </li>
                    
                </ul>
                <ul>
                    <li class="header-nav-tel">
                        <a class="header-tel" href="tel:+7(903)844-02-22" data-device="mobile">+7(903)844-02-22</a>
                        <p class="header-tel" data-device="desktop">+7(903)844-02-22</p>
                    </li>
                    <li class="header-nav-try-free">
                        <a href="https://pvs-studio.ru/ru/pvs-studio/try-free/" class="button" data-type="secondary">
                            Начать бесплатно
                        </a>
                    </li>
                    <li class="header-nav-burger">
                        <button class="burger" id="burger" data-state="closed">
                            <span></span>
                            <span></span>
                            <span></span>
                        </button>
                    </li>
                </ul>
            </nav>
        </div>
    </div>

    <nav class="header-nav" data-nav="mobile" data-state="closed">
        <div class="container">
            <ul class="mobile-list">
                
                <li>
                    <h4 
                        data-bs-toggle="collapse" 
                        data-bs-target="#nav-mobile-1" 
                        aria-expanded="false" 
                        aria-controls="nav-mobile-1"
                    >
                        Анализатор
                    </h4>
                    
                    <div id="nav-mobile-1" class="collapse">
                        <ul class="mobile-sublist">
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/">О PVS-Studio</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/download/">Скачать PVS-Studio</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/whatsnew/">Что нового в 7.42</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/faq/">FAQ</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/gost-71207/">ГОСТ Р 71207–2024</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/fstec/">Сертификация ФСТЭК</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/sast/">SAST (CWE, OWASP, MISRA)</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/pvs-studio/examples/">Online Examples</a>
                                
                            </li>
                            
                        </ul>
                    </div>
                </li>
                
                <li>
                    <h4 
                        data-bs-toggle="collapse" 
                        data-bs-target="#nav-mobile-2" 
                        aria-expanded="false" 
                        aria-controls="nav-mobile-2"
                    >
                        Документация
                    </h4>
                    
                    <div id="nav-mobile-2" class="collapse">
                        <ul class="mobile-sublist">
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/docs/">Общая документация</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/docs/warnings/">Диагностические правила</a>
                                
                            </li>
                            
                        </ul>
                    </div>
                </li>
                
                <li>
                    <h4 
                        data-bs-toggle="collapse" 
                        data-bs-target="#nav-mobile-3" 
                        aria-expanded="false" 
                        aria-controls="nav-mobile-3"
                    >
                        Лицензия
                    </h4>
                    
                    <div id="nav-mobile-3" class="collapse">
                        <ul class="mobile-sublist">
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/order/">Покупка лицензии</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/order/license/">Выбор лицензии</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/for-clients/">Для клиентов</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/order/for-students/">Для студентов</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/order/open-source-license/">Для Open Source</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/order/mvp/">Для Microsoft MVP</a>
                                
                            </li>
                            
                        </ul>
                    </div>
                </li>
                
                <li>
                    <h4 
                        data-bs-toggle="collapse" 
                        data-bs-target="#nav-mobile-4" 
                        aria-expanded="false" 
                        aria-controls="nav-mobile-4"
                    >
                        Блог
                    </h4>
                    
                    <div id="nav-mobile-4" class="collapse">
                        <ul class="mobile-sublist">
                            
                            <li>
                                
                                <p class="clr-neutral-300">Блог</p>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/video/">Видео</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/books/">Книги</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/training/">Центр обучений</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/quest/">Развлечения</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/events/">Мероприятия</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/inspections/">Проверенные проекты</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/examples/">Примеры ошибок</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/terms/">Терминология</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/blog/lessons/">64-битные уроки</a>
                                
                            </li>
                            
                        </ul>
                    </div>
                </li>
                
                <li>
                    <h4 
                        data-bs-toggle="collapse" 
                        data-bs-target="#nav-mobile-5" 
                        aria-expanded="false" 
                        aria-controls="nav-mobile-5"
                    >
                        О компании
                    </h4>
                    
                    <div id="nav-mobile-5" class="collapse">
                        <ul class="mobile-sublist">
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/about/">История</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/about/customers/">Клиенты</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/about/careers/">Вакансии</a>
                                
                            </li>
                            
                            <li>
                                
                                <a href="https://pvs-studio.ru/ru/address/">Контакты</a>
                                
                            </li>
                            
                        </ul>
                    </div>
                </li>
                
            </ul>

            <ul class="mobile-list">
                <li>
                    <h4 
                        data-bs-toggle="collapse" 
                        data-bs-target="#personal-account-mobile-menu" 
                        aria-expanded="false" 
                        aria-controls="personal-account-mobile-menu"
                    >
                        Личный кабинет
                    </h4>
                    
                    <div id="personal-account-mobile-menu" class="collapse">
                        <ul class="mobile-sublist | cabinet_actions" data-no-crawl>
                            
                                <li>
                                    <a href="/login/?next=/ru/blog/posts/" rel="nofollow" data-test="pa-login" data-no-crawl>Авторизоваться</a>
                                </li>
                                <li>
                                    <a href="https://auth.pvs-studio.ru/ru/register/"  data-test="pa-reg" rel="nofollow" data-no-crawl>Зарегистрироваться</a>
                                </li>
                            
                        </ul>
                    </div>
                </li>

                <li>
                    <h4
                        data-bs-toggle="collapse" 
                        data-bs-target="#lang-mobile-menu" 
                        aria-expanded="false" 
                        aria-controls="lang-mobile-menu"
                    >
                        Язык
                    </h4>
                    
                    <div id="lang-mobile-menu" class="collapse">
                        <ul class="mobile-sublist">
                            
                            
                                <li><a href="https://pvs-studio.com/en/blog/posts/" data-no-crawl rel="nofollow" data-state="inactive">English</a></li>
                            

                            
                            
                                <li><p data-state="disabled">Français</p></li>
                            

                            
                            
                        </ul>
                    </div>
                </li>
            </ul>

            <div class="mobile-buttons gy-4">
                
                <a  href="https://pvs-studio.ru/ru/about-feedback/" class="button" data-type="secondary"
                    onclick="ym(92705395,'reachGoal','header_support_to_writetous')"
                    data-metric-tag="a-header-support-to-writetous">
                    Поддержка
                </a>
                

                <a href="https://pvs-studio.ru/ru/pvs-studio/try-free/" class="button" data-type="secondary">Начать бесплатно</a>
            </div>
        </div>
    </nav>
</header>



<div class="b-content">
    


<style>
    .blog-card {
        display: flex;
        flex-direction: column;

        width: 100%;

        background-color: #fff;
        box-shadow: 3px 3px 6px 0 rgba(65,72,75,0.25);
        border-radius: 8px;
        overflow: hidden;

        margin-bottom: 20px;
    }
    @media (min-width: 768px) {
        .blog-card {
            margin-bottom: 30px;
        }
    }

    .blog-card__image {
        display: block;
        aspect-ratio: 480/270;

        /*  Ссылка передается в inline style в переменной.
            Почему нельзя задать фоновую картинку в стиле напрямую - хз,
            Оно просто ломается :( */
        background-image: var(--blog-image);

        background-repeat: no-repeat;
        background-position: top;
        background-size: contain;
    }

    .blog-card-content {
        position: relative;

        flex-grow: 1;
        padding: 15px 15px 45px;
    }
    @media (min-width: 768px) {
        .blog-card-content {
            padding: 15px 30px 45px;
        }
    }
    .blog-card-content__read-more {
        position: absolute;
        bottom: 0;
        left: 0;

        width: 100%;
        height: 80px;

        display: flex;
        align-items: center;
        justify-content: center;

        font-size: 26px;
        color: #949494;

        background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 46.64%);
        border-bottom-left-radius: 8px;
        border-bottom-right-radius: 8px;

        text-decoration: none;
        cursor: pointer;
    }
</style>



<style>
    .show-more {
        display: flex;
        align-items: center;
        justify-content: center;

        padding: 10px 20px;
        margin-bottom: 20px;

        background-color: rgba(240, 240, 240, 0.6);

        font-size: 16px;

        cursor: pointer;
    }
    .show-more.loading {
        pointer-events: none;
    }
    @media (min-width: 768px) {
        .show-more {
            font-size: 22px;
        }
    }
    .show-more:hover {
        background-color: #F0F0F0;
    }
    .show-more__text > img {
        transform: rotate(-90deg);
        margin-left: 5px;
    }
</style>



<style>
    .pagination-pages-count {
        font-size: 12px;
    }
    @media (min-width: 768px) {
        .pagination-pages-count {
            font-size: 16px;
        }
    }
</style>

    <div class="b-breadcrumbs b-breadcrumbs--light" >
        <div class="container">
            <div class="row">
                <div class="col">
                    <div class="b-breadcrumbs__content">
                        <div class="b-breadcrumbs__item">
                            <a href="https://pvs-studio.ru/ru/">Главная</a>
                        </div>
                        <div class="b-breadcrumbs__divider">></div>
                        
                            
                                
                                    <div class="b-breadcrumbs__item">
                                        Публикации
                                    </div>
                                
                            
                        
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="b-content__section">
        <div class="b-blog" >
            <div class="b-blog__content container">
                <div class="row">
                    <div class="col" style="margin-bottom: 15px;">
                        
                            <h1 class="b-blog__title" style="margin-top: 0;">
                                
                                    
                                        
                                            
                                                Публикации: статьи
                                            
                                        
                                    
                                
                            </h1>
                        
                    </div>
                </div>

                
                    <div class="row">
                        <div class="col">
                            <div class="b-blog__tabs" >
                                <a class="b-blog__tab "
                                   href="https://pvs-studio.ru/ru/blog/">
                                    Все
                                </a>
                                <a href="https://pvs-studio.ru/ru/blog/posts/"
                                   class="b-blog__tab b-blog__tab--active">
                                    Статьи
                                </a>
                                
                                    
                                        <a class="b-blog__tab "
                                           href="https://pvs-studio.ru/ru/blog/video/">
                                            Видео
                                        </a>
                                    
                                

                                
                                <a class="b-blog__tab "
                                   href="https://pvs-studio.ru/ru/blog/books/">
                                    Книги
                                </a>
                                

                                

                                
                                    <a class="b-blog__tab "
                                       href="https://pvs-studio.ru/ru/blog/quest/">
                                        Развлечения
                                    </a>

                                    <div class="b-blog__tab errors "
                                         onclick="document.location.href = 'https://pvs-studio.ru/ru/blog/examples/'">
                                        Ошибки
                                    </div>
                                
                            </div>
                        </div>
                    </div>

                    
                        <div class="b-blog__top | row gy-2">
                            <div class="b-blog__filters | col-12 col-lg-8">
                                <div class="row row-cols-auto gy-2">
                                    
                                         
                                        
                                            <div class="col">
                                                <a href="https://pvs-studio.ru/ru/blog/posts/cpp/"
                                                    class="b-blog__filter ">C++</a>
                                            </div>
                                        
                                            <div class="col">
                                                <a href="https://pvs-studio.ru/ru/blog/posts/csharp/"
                                                    class="b-blog__filter ">C#</a>
                                            </div>
                                        
                                            <div class="col">
                                                <a href="https://pvs-studio.ru/ru/blog/posts/java/"
                                                    class="b-blog__filter ">Java</a>
                                            </div>
                                        
                                            <div class="col">
                                                <a href="https://pvs-studio.ru/ru/blog/posts/go/"
                                                    class="b-blog__filter ">Go</a>
                                            </div>
                                        
                                            <div class="col">
                                                <a href="https://pvs-studio.ru/ru/blog/posts/js/"
                                                    class="b-blog__filter ">JS</a>
                                            </div>
                                        
                                    
                                </div>
                            </div>

                            <div class="b-blog__search | col-12 col-lg-4">
                                <div class="b-blog__search-input">
                                    <form action="https://pvs-studio.ru/ru/blog/search/" data-metric-tag="form-blog-search-2">
                                        <div class="b-blog__search-input__btn"></div>
                                        <input class="" type="text" placeholder="Поиск" name="search"
                                               value="" style="min-width: 100px;" />
                                    </form>
                                </div>
                            </div>
                        </div>
                    
                

                
                    
                    
                    
                    <div class="b-blog__tags">
                        <h3>Все теги:</h3>

                        <div>
                            <div class="row row-cols-auto gx-6 gy-2">
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Cpp">#Cpp</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=CSharp">#CSharp</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Knowledge">#Knowledge</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=GameDev">#GameDev</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=StaticAnalysis">#StaticAnalysis</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=64bit">#64bit</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Java">#Java</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Release">#Release</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Security">#Security</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=DevOps">#DevOps</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Marketing">#Marketing</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Compiler">#Compiler</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=GuestArticle">#GuestArticle</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=OS">#OS</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Embedded">#Embedded</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Broadcasting">#Broadcasting</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Go">#Go</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=Case">#Case</a>
                                </div>
                                
                                <div class="col">
                                    <a href="https://pvs-studio.ru/ru/blog/posts/?tag=JavaScript">#JavaScript</a>
                                </div>
                                
                            </div>
                        </div>
                    </div>
                    
                

                <div class="b-blog__items mb-1">
                    <div id="blog__items-row" class="row">
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11680">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/1361/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1361_pt_1_ru/image1_thm_blank_480x270.png?ver=04-09-2026-12-34-17')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=GameDev" 
                        class="b-blog__item-tag"
                    >#GameDev</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    09 Апр 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1361/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Game++. Часть 1.1: С++, движки и архитектуры
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Сергей Кушниренко
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Книга представляет собой сборник размышлений о языке программирования C++, алгоритмах и практиках в контексте разработки игр — о его сильных и слабых сторонах, практических решениях и...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1361/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11624">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1360/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1360_LinuxExceptionTwo_ru/image1_thm_blank_480x270.png?ver=03-31-2026-12-35-58')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=Cpp" 
                        class="b-blog__item-tag"
                    >#Cpp</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    31 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1360/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Как работает выбор catch-блока при обработке исключений
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Антон Третьяков
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Если таблетка знает, что лечить, может, и исключение само может понять, когда нужно остановиться в своём путешествии по стеку? В прикладном программировании часто хватает и подобного описания...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1360/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                                <div class="col-12" style="margin-bottom: 30px;">
                                    <div class="container mb-12">
                                        <form action="/api/subscribe/"
                                            method="post"
                                            id="form-blog-item-sub" 
                                            class="flow-6 | js-design-form"
                                            data-type="subscribe"
                                            data-test-id="subscribe"
                                            data-metric-tag="form-blog-item-sub"
                                        >
                                            <div class="b-blog__sub mb-0">
                                                <div class="b-blog__sub-title">Подписаться на рассылку</div>

                                                <div class="b-blog__sub-desc">
                                                    Хотите раз в месяц получать от нас подборку вышедших в этот период самых интересных статей и новостей? Подписывайтесь!
                                                </div>

                                                <input type="hidden" name="checkboxes" value="digest">
                                                <input type="hidden" name="lang" value="ru">

                                                <div class="row align-items-center mb-3">
                                                    <div class="col-12 col-md-5">
                                                        <div class="input-group" data-text-on-input="true">
                                                            <input 
                                                                type="email"
                                                                class="input"
                                                                id="email-sub"
                                                                name="email"
                                                                placeholder="Ваш Email"
                                                                data-type="email"
                                                            >
                                                            <div class="error-messages"></div>
                                                        </div>
                                                        <input id="ajax_whatsnew_form_tp" name="tp" type="hidden" value="digest">
                                                    </div>

                                                    <div class="col-12 col-md-3">
                                                        <div class="b-blog__sub-button input-group">
                                                            <input type="submit" value=Подписаться></input>
                                                        </div>
                                                    </div>

                                                    <div class="col-12 col-md-4">
                                                        <div class="b-blog__sub-politic">
                                                            <label class="label" style="margin-bottom: 10px;">
                                                                <input class="checkbox" style="margin-top: 4px;" type="checkbox" name="agree_checkbox" required>
                                                                Даю согласие на обработку своих персональных данных в соответствии с <a href="https://pvs-studio.ru/ru/privacy-policy/" target="_blank">Политикой обработки персональных данных</a>
                                                            </label>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </form>
                                    </div>
                                </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11623">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/1359/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1359_press_here_ru/image1_thm_blank_480x270.png?ver=03-31-2026-16-25-17')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
            </div>
            <div class="b-blog__item-date">
                
                    30 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1359/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            &quot;Нажмите сюда, если не работает&quot;
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Алёна Шорникова
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Бывший коллега, который учил меня программировать, когда я только-только устроилась в PVS-Studio, пять лет назад написал статью о технической поддержке и о том, как от неё не выгорать. За это...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1359/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11622">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/1358/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1358_PVS_FromStart_ru/image1_thm_blank_480x270.png?ver=04-02-2026-10-18-13')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=StaticAnalysis" 
                        class="b-blog__item-tag"
                    >#StaticAnalysis</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    27 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1358/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Всё, что нужно знать для начала работы в PVS-Studio
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Глеб Асламов
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Статический анализатор PVS-Studio — это инструмент для поиска ошибок в коде на протяжении всего жизненного цикла проекта. В этой статье разберём основные особенности нашего анализатора, сценарии...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1358/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11621">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/java/1357/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1357_cwa_in_java_ru/image1_thm_blank_480x270.png?ver=03-26-2026-11-01-08')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=Knowledge" 
                        class="b-blog__item-tag"
                    >#Knowledge</a>
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=Java" 
                        class="b-blog__item-tag"
                    >#Java</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    26 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/java/1357/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Closed-world assumption в Java
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Егор Пиший
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                При сборке Java приложения в нативный образ требуются настройки для работы рефлексии, прокси и других динамических механизмов Java. Зачем, если JVM справлялась с этим сама? Разбираем отличия...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/java/1357/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11619">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/csharp/1356/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1356_S_Box_ru/image1_thm_blank_480x270.png?ver=03-26-2026-11-01-12')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=CSharp" 
                        class="b-blog__item-tag"
                    >#CSharp</a>
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=GameDev" 
                        class="b-blog__item-tag"
                    >#GameDev</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    25 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/csharp/1356/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Песочница ошибок: проверка игрового движка S&Box
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Глеб Асламов
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Рынок современных игровых движков постепенно расширяется, и всё больше студий выбирают не кого-то из двух гигантов (учитывая последние события, вообще одного), а движки поменьше. Сегодня...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/csharp/1356/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11618">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/1355/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1355_pvs_studio_18_years_ru/image1_thm_blank_480x270.png?ver=04-09-2026-10-14-22')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
            </div>
            <div class="b-blog__item-date">
                
                    24 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1355/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            PVS-Studio 18 лет! Принимаем поздравления!
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Сергей Хренов
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                21 марта для нас не просто дата в календаре, а день рождения нашей компании PVS-Studio. Но этот год особенный, так как наш единорог стал совсем взрослым и отмечает...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/1355/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11617">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1354/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1354_Vib_OS_ru/image1_thm_blank_480x270.png?ver=04-09-2026-10-14-48')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=Cpp" 
                        class="b-blog__item-tag"
                    >#Cpp</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    20 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1354/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Давайте заглянем в этот самый вайб-код
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Андрей Карпов
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Начал появляться код тех самых навайбкоденных проектов, который изменит мир и т. д. Ну а мы начинаем потихоньку смотреть код этих проектов, в том числе и сквозь призму статического...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1354/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11612">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1353/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1353_OpenBSDTalk_ru/image1_thm_blank_480x270.png?ver=03-13-2026-14-42-58')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=Cpp" 
                        class="b-blog__item-tag"
                    >#Cpp</a>
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=OS" 
                        class="b-blog__item-tag"
                    >#OS</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    13 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1353/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Экзотика или...? Об OpenBSD с Вячеславом Воронцовым
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Тарас Шевченко
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                В интернете только и разговоров, что про GNU/Linux. Про операционные системы семейства BSD не так часто разговаривают, как о нём. Они сложнее? Они скучнее? Попробуем ответить на эти вопросы вместе...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/cpp/1353/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                            <div class="col-12 col-md-6 d-flex align-items-stretch mb-12">
                                

<div class="blog-card" data-id="11610">
    
        
            <a href="https://pvs-studio.ru/ru/blog/posts/go/1352/" class="blog-card__image" style="--blog-image:url('https://cdn.pvs-studio.ru/media/docx/blog/1352_go_eap_ru/image1_thm_blank_480x270.png?ver=03-11-2026-10-36-38')">
            </a>
        
    

    <div class="blog-card-content">
        
        <div class="b-blog__item-bottom mb-2 mb-md-3">
            <div class="b-blog__item-tags">
                
                    <a 
                        href="https://pvs-studio.ru/ru/blog/posts/?tag=Go" 
                        class="b-blog__item-tag"
                    >#Go</a>
                
            </div>
            <div class="b-blog__item-date">
                
                    11 Мар 2026
                
            </div>
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/go/1352/" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
            Бета-тест Go анализатора PVS-Studio
        </a>
        

        
        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
            Артём Ровенский
        </div>
        

        
        <div class="b-blog__item-text mb-0">
            
                Команда PVS-Studio усердно работала над созданием статического анализатора кода для Go, и наконец мы рады объявить о начале открытого тестирования! Приглашаем всех заинтересованных...
            
        </div>
        

        
        <a href="https://pvs-studio.ru/ru/blog/posts/go/1352/" class="blog-card-content__read-more">
            ...
        </a>
        
    </div>
</div>

                            </div>
                            
                        
                    </div>
                </div>

                
                <div class="show-more d-none">
                    <span class="show-more__text">
                        Показать еще
                        <img src="https://cdn.pvs-studio.ru/static/images/icons/arrows/arrow-left.svg" alt="Pagination arrow previous" width="8" height="14">
                    </span>
                    <div class="show-more__loading" style="display: none">
                        Загрузка...
                    </div>
                </div>
                

                <div class="pagination-pages-count d-flex flex-column align-items-center flex-md-row justify-content-between mb-5">
                    <div id="paginator" class="mb-4 mb-md-0">
<style>
    .pagination-container {
        display: flex;

        font-size: 12px;
    }
    @media (min-width: 768px) {
        .pagination-container {
            font-size: 16px;
        }
    }
    .pagination-content {
        display: flex;
        align-items: center;
    }
    .pagination__arrow {
        text-decoration: none;
        color: #141414;

        display: flex;
        align-items: center;
        justify-content: center;

        width: 25px;
        height: 25px;

        background-color: #F0F0F0;
        border-radius: 4px;
    }
    .pagination__arrow:not(.active) {
        background-color: transparent;

        pointer-events: none;
    }
    .pagination__arrow.prev {
        margin-right: 5px;
    }
    .pagination__arrow.next {
        margin-left: 0px;
    }
    .pagination__arrow.next > img {
        transform: rotate(180deg);
    }

    .pagination-pages {
        display: flex;
    }

    .pagination__page.dots {
        pointer-events: none;
    }
    .pagination__page {
        text-decoration: none;
        color: inherit;

        border-radius: 4px;

        width: 25px;
        height: 25px;
        padding: 0 .5em;

        display: flex;
        align-items: center;
        justify-content: center;
    }
    .pagination__page:not(.dots):hover {
        background-color: #DCDCDC;
    }
    .pagination__page.active {
        background-color: #009FEE;
        color: white;

        pointer-events: none;
    }

    .pagination__arrow,
    .pagination__page {
        margin-right: .5em;
    }
    @media (min-width: 768px) {
        .pagination__arrow,
        .pagination__page {
            width: 30px;
            height: 30px;
        }
    }
</style>


    <div class="pagination-container">
            <div class="pagination-content">
                
                <a
                    href="?#"
                    class="
                        pagination__arrow prev
                        
                    "
                >
                    <img src="https://cdn.pvs-studio.ru/static/images/icons/arrows/arrow-left.svg" alt="Pagination arrow previous" width="8" height="14">
                </a>
                

                
                <div class="pagination-pages">
                    
                    
                        
                            <a
                                href="?page=1"
                                class="pagination__page active"
                            >
                                1
                            </a>
                        
                    
                        
                            <a
                                href="?page=2"
                               class="pagination__page"
                            >
                                2
                            </a>
                        
                    
                        
                            <a
                                href="?page=3"
                               class="pagination__page"
                            >
                                3
                            </a>
                        
                    
                    
                        
                            <div class="pagination__page dots">...</div>
                        
                        <a
                            href="?page=159"
                           class="pagination__page"
                        >
                            159
                        </a>
                    
                </div>
                

                
                <a
                    href="?page=2"
                    class="
                        pagination__arrow next
                         active 
                    "
                >
                    <img src="https://cdn.pvs-studio.ru/static/images/icons/arrows/arrow-left.svg" alt="Pagination arrow next" width="8" height="14">
                </a>
                
            </div>
        </div>
</div>
                    <div id="pages-count" class="align-self-end align-self-md-center">
                        <span style="color: #414F57">Показано:</span>
                        <span class="from"></span>-<span class="to"></span>
                        из
                        
                            1588
                        
                    </div>
                </div>
            </div>
        </div>
    </div>

<script>
	let URL_STRING = window.location.href
    let URL_WITHOUT_GET = URL_STRING.split('?')[0]
    const INITIAL_PAGE_NUMBER = getPageNumber()
    let SCROLL_Y

	setPageFromTo()
	toggleShowMoreVisibility()

	$('.show-more').click(() => {
		toggleLoadingMessage(true)
		SCROLL_Y = $(window).scrollTop()

		URL_STRING = window.location.href
		URL_WITHOUT_GET = URL_STRING.split('?')[0]

		const getParams = getGetParamsFromUrl()

		history.pushState({}, '', `${URL_WITHOUT_GET}?${getParams}`);

		drawPostsAndPaginator(getParams)
	})

    function toggleShowMoreVisibility() {
        if ($('.pagination__page').last().hasClass('active') || !$('.pagination-container')[0]) {
			$('.show-more').hide()
        } else {
			$('.show-more').css('display', 'flex')
        }
	}

    function getPageNumber() {
		const URL_GET_PARAMS_STRING = window.location.search
		const URL_GET_PARAMS = new URLSearchParams(URL_GET_PARAMS_STRING);

        let page;

        if (!URL_GET_PARAMS.has('page') || !URL_GET_PARAMS.get('page')) {
            page = 1;
        } else if (URL_GET_PARAMS.get('page').match(/^[0-9]+$/gm)) {
            page = URL_GET_PARAMS.get('page');
        } else if (URL_GET_PARAMS.get('page') === "last") {
            
            page = $(".pagination__page.active").text().trim();
        }

        page = parseInt(page);

        return page
    }

    function setPageFromTo() {
        const postsOnPage = 10
        const postsOnPageCurrent = $('.blog-card').length

        const from = (INITIAL_PAGE_NUMBER - 1) * postsOnPage + 1
        const to = from + postsOnPageCurrent - 1

        $('#pages-count .from').text(from)
        $('#pages-count .to').text(to)

        if (postsOnPageCurrent === 0) {
            $('#pages-count .from').text(0)
            $('#pages-count .to').text(0)
        }
    }

    function getGetParamsFromUrl() {
		const URL_GET_PARAMS_STRING = window.location.search
		const URL_GET_PARAMS = new URLSearchParams(URL_GET_PARAMS_STRING);
		const page = URL_GET_PARAMS.has('page') ? parseInt(URL_GET_PARAMS.get('page')) : 1
		const nextPage = page + 1

		if (URL_GET_PARAMS.has('page')) {
			URL_GET_PARAMS.set('page', nextPage.toString())
		} else {
			URL_GET_PARAMS.append('page', nextPage.toString())
		}

		return URL_GET_PARAMS.toString()
    }

	function getPostCard(post) {
		const tags = post.tags
			.map(tag => {
				return `<a href="${URL_WITHOUT_GET}?tag=${tag}" class="b-blog__item-tag">#${tag}</a>`
			})
			.join(' ')
		const authors = post.authors.join(', ')

		return `
            <div class="col-12 col-md-6 d-flex align-items-stretch">
                <div class="blog-card" data-id="">
                    <a href="${post.link}"
                        class="blog-card__image"
                        style="--blog-image:url(${post.image});">
                    </a>

                    <div class="blog-card-content">
                        <div class="b-blog__item-bottom mb-2 mb-md-3">
                            <div class="b-blog__item-tags">
                                ${tags}
                            </div>
                            <div class="b-blog__item-date">${post.date}</div>
                        </div>

                        <a href="${post.link}" class="b-blog__item-title mb-2 mb-md-3" style="display: block;">
                            ${decodeEntities(post.title)}
                        </a>

                        <div class="b-blog__item-author mb-3 mb-md-4" style="width: 100%">
                            ${authors}
                        </div>

                        <div class="b-blog__item-text mb-0">
                            ${decodeEntities(post.annotation)}
                        </div>

                        <a href="${post.link}" class="blog-card-content__read-more">...</a>
                    </div>
                </div>
            </div>
        `
	}

	function toggleLoadingMessage(isLoading) {
		if (isLoading) {
			$('.show-more__text').hide()
			$('.show-more__loading').show()
		} else {
			$('.show-more__text').show()
			$('.show-more__loading').hide()
		}

		$('.show-more').toggleClass('loading')
	}

	function drawPostsAndPaginator(getParams) {
		$.ajax({
			url: `${URL_WITHOUT_GET}?${getParams}&json=1`,
			success: function(data) {
				// Удаляем переносы строки и \ тк ломается JSON
				let dataWithNoBreaks = data.replace(/\\n/g, "").replace(/\\/g, "")
				let {posts, paginator_html} = JSON.parse(dataWithNoBreaks)

				drawPosts(posts)
				drawPaginator(paginator_html)

				toggleLoadingMessage(false)
				toggleShowMoreVisibility()
			}
		})
    }

	function drawPaginator(paginator_html) {
		$('#paginator').html(decodeEntities(paginator_html))
    }

	function drawPosts(posts) {
		posts.forEach(post => {
			$('#blog__items-row').append(getPostCard(post))
		})

		setPageFromTo()
        $(window).scrollTop(SCROLL_Y)
	}

	// Преобразует &lt; в < и тд
	function decodeEntities(encodedString) {
		const textArea = document.createElement('textarea');
		textArea.innerHTML = encodedString;
		return textArea.value;
	}
</script>

</div>





    




    <section id="footer_form" class="section" data-type="accent">
      <div class="[ container ] [ flow-6 ]">
          <h2 class="heading-2">
            
              Хотите получить ключ на&nbsp;использование анализатора в&nbsp;пробный период?
            
          </h2>

          <div class="row">
              <div class="col-12 col-md-6 col-lg-3">
                
                    <a class="[ button ] [ w-100 ]" id="footer-trial-btn"
                            data-type="tertiary"
                            href="/ru/pvs-studio/try-free/"
                            data-metric-tag="button-footer-trial"
                            href="/ru/pvs-studio/try-free/"
                            onclick="ym(92705395,'reachGoal','futterA')">
                        Получить ключ
                    </a>
                
            </div>
        </div>
    </div>
</section>



<footer id="footer">
    <section id="footer-menu" class="section">
        <div class="container">
            <div class="row gy-6">
                <div class="col-12 col-md-6 col-lg-12">
                    <div class="row gy-4">
                        
                            <div class="col-12 col-lg-3">
                                <div>
                                    <h3 
                                        class="[ heading-3 ]" 
                                        data-bs-toggle="collapse" 
                                        data-bs-target="#footer-menu-1" 
                                        aria-expanded="true" 
                                        aria-controls="footer-menu-1"
                                    >
                                        Достижения
                                    </h3>

                                    <div id="footer-menu-1" class="collapse show">
                                        <ul class="no-style flow-2 m-0 p-0 | mt-4">
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/blog/posts/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Блог
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/blog/inspections/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Проверенные проекты
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/blog/examples/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Найденные ошибки
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/about/customers/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Клиенты
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/pvs-studio-eap/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Ранний доступ
                                                    </a>
                                                </li>
                                            
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        
                            <div class="col-12 col-lg-3">
                                <div>
                                    <h3 
                                        class="[ heading-3 ]" 
                                        data-bs-toggle="collapse" 
                                        data-bs-target="#footer-menu-2" 
                                        aria-expanded="true" 
                                        aria-controls="footer-menu-2"
                                    >
                                        PVS-Studio
                                    </h3>

                                    <div id="footer-menu-2" class="collapse show">
                                        <ul class="no-style flow-2 m-0 p-0 | mt-4">
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/pvs-studio/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        О PVS-Studio
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/pvs-studio/download/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Скачать
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/for-clients/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="trial">
                                                        Запросить триал
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/docs/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Документация
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/pvs-studio/examples/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Online Examples
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/docs/manual/0029/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Не работает
                                                    </a>
                                                </li>
                                            
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        
                            <div class="col-12 col-lg-3">
                                <div>
                                    <h3 
                                        class="[ heading-3 ]" 
                                        data-bs-toggle="collapse" 
                                        data-bs-target="#footer-menu-3" 
                                        aria-expanded="true" 
                                        aria-controls="footer-menu-3"
                                    >
                                        Лицензирование
                                    </h3>

                                    <div id="footer-menu-3" class="collapse show">
                                        <ul class="no-style flow-2 m-0 p-0 | mt-4">
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/order/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Покупка лицензии
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/order/license/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Выбор лицензии
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/for-clients/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Для клиентов
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/order/for-students/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Для студентов
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/order/open-source-license/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Для Open Source
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/order/mvp/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Для Microsoft MVP
                                                    </a>
                                                </li>
                                            
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        
                            <div class="col-12 col-lg-3">
                                <div>
                                    <h3 
                                        class="[ heading-3 ]" 
                                        data-bs-toggle="collapse" 
                                        data-bs-target="#footer-menu-4" 
                                        aria-expanded="true" 
                                        aria-controls="footer-menu-4"
                                    >
                                        Компания
                                    </h3>

                                    <div id="footer-menu-4" class="collapse show">
                                        <ul class="no-style flow-2 m-0 p-0 | mt-4">
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/about/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        О компании
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/about/careers/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Вакансии
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/address/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Контакты
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/about-feedback/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Напишите нам
                                                    </a>
                                                </li>
                                            
                                                <li>
                                                    <a
                                                        href="https://pvs-studio.ru/ru/subscribe/"
                                                        class=" [ no-style hover-underline ]"
                                                        data-form="">
                                                        Подпишитесь на нас
                                                    </a>
                                                </li>
                                            
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        
                    </div>
                </div>
        
                <div class="col-12 col-md-6 d-lg-none">
                    <div class="flow-2">
                        <p class="m-0">
                            Свяжитесь с нами по техническим<br>или другим вопросам
                        </p>
                        <a href="/ru/about-feedback/" class="[ button ] [ w-md-auto ]" data-type="secondary"> 
                            Написать нам
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section id="footer-bottom" class="section" data-type="secondary">
        <div class="container">
            <div class="row gy-6">
                <div class="col-12 col-lg-4 | order-lg-1">
                    <div class="row gy-4">
                        <div class="col-12">
                            <form action="https://pvs-studio.ru/ru/search" id="footer-form-search" data-test-id="footer-search-form" data-test-exclude-start-disable data-metric-tag="form-footer-search">
                                <div class="input-group" data-type="search">
                                    <input type="search" name="search" placeholder="Поиск" class="input">
                                </div>
                            </form>
                        </div>
    
                        <div class="col-12">
                            <div class="row row-cols-auto gy-2">
                                
                                    
                                        <div class="col | d-flex align-items-center">
                                            <a href="https://x.com/pvsstudio_rus" rel="nofollow" target="_blank" class="d-block">
                                                <img src="https://cdn.pvs-studio.ru/static/images/mail/logo_x.svg" alt="Social logo" class="icon" data-type="small" width="32" height="32">
                                            </a>
                                        </div>
                                    
                                
                                    
                                
                                    
                                        <div class="col | d-flex align-items-center">
                                            <a href="https://vk.com/pvsstudio_rus" rel="nofollow" target="_blank" class="d-block">
                                                <img src="https://cdn.pvs-studio.ru/static/images/logo/vk_2.svg" alt="Social logo" class="icon" data-type="small" width="32" height="32">
                                            </a>
                                        </div>
                                    
                                
                                    
                                
                                    
                                        <div class="col | d-flex align-items-center">
                                            <a href="https://t.me/pvsstudio_rus" rel="nofollow" target="_blank" class="d-block">
                                                <img src="https://cdn.pvs-studio.ru/static/images/logo/telegram.svg" alt="Social logo" class="icon" data-type="small" width="32" height="32">
                                            </a>
                                        </div>
                                    
                                
                                    
                                        <div class="col | d-flex align-items-center">
                                            <a href="https://feedly.com/i/subscription/feed%2Fhttps%3A%2F%2Fpvs-studio.ru%2Fru%2Fb%2Frss%2F" rel="nofollow" target="_blank" class="d-block">
                                                <img src="https://cdn.pvs-studio.ru/static/images/logo/feedly_icon.svg" alt="Social logo" class="icon" data-type="small" width="32" height="32">
                                            </a>
                                        </div>
                                    
                                
                                    
                                
                                    
                                        <div class="col | d-flex align-items-center">
                                            <a href="https://www.youtube.com/@PVSStudioTool" rel="nofollow" target="_blank" class="d-block">
                                                <img src="https://cdn.pvs-studio.ru/static/images/icons/youtube.svg" alt="Social logo" class="icon" data-type="small" width="32" height="32">
                                            </a>
                                        </div>
                                    
                                
                                    
                                
                                    
                                        <div class="col | d-flex align-items-center">
                                            <a href="https://habr.com/ru/company/pvs-studio/blog/" rel="nofollow" target="_blank" class="d-block">
                                                <img src="https://cdn.pvs-studio.ru/static/images/logo/habr_white.svg" alt="Social logo" class="icon" data-type="small" width="32" height="32">
                                            </a>
                                        </div>
                                    
                                
                                    
                                
                            </div>
                        </div>
                    </div>
                </div>

                <div class="d-none d-lg-block | col-lg-4 | order-lg-0">
                    <p class="m-0 mb-4">
                        Свяжитесь с нами по техническим<br>или другим вопросам
                    </p>
                    <a href="/ru/about-feedback/" class="[ button ] [ w-md-auto ]" data-type="secondary">
                        Написать нам
                    </a>
                </div>

                <div class="col-6 col-lg-4 | order-lg-first">
                    <div class="row">
                        <div class="col-12 col-md-6">
                            <img id="footer-logo" src="https://cdn.pvs-studio.ru/static/images/logo/pvs_logo_7.svg" alt="PVS-Studio logo" width="160" height="102">
                        </div>
                    </div>
                </div>

                <div class="col-6 col-lg-12 | order-lg-last | d-flex flex-column justify-content-center">
                    <div class="row gy-2">
                        <div class="col-12 col-lg-4">
                            <a href="https://pvs-studio.ru/ru/sitemap/" class="clr-inherit">Карта сайта</a>
                        </div>
                        <div class="col-12 col-lg-4 | order-lg-last">
                            <a href="https://pvs-studio.ru/ru/terms-of-use/" class="clr-inherit">Пользовательское соглашение</a>
                        </div>
                        <div class="col-12 col-lg-4 | order-lg-first">
                            <p class="m-0">©2008 - 2026, ООО&nbsp;"ПВС"<br>ИНН: 7105502635</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
</footer>




<style>
    input[name="send"]{
        pointer-events: auto;
        background-color: '';
    }

    input[name="send"]:disabled {
        pointer-events: none;
        background-color: #bababa !important;
    }

    /* Utility */
    .blur {
        filter: blur(3px);
    }
    .lg-backdrop {
        opacity: 0.3 !important;
    }
    .lg-toolbar {
        background-color: #384248;
        opacity: 0.95;
    }
    .lg-toolbar .lg-icon {
        color: #ccc;
    }
    @media (min-width: 768px) {
        .lg-toolbar .lg-icon {
            font-size: 24px;
            width: 44px;
        }
    }
    @media (min-width: 768px) {
        .lg-toolbar .lg-icon {
            font-size: 28px;
            width: 52px;
        }
    }
    @media (min-width: 992px) {
        .lg-toolbar .lg-icon {
            font-size: 32px;
            width: 60px;
        }
    }
    #lg-actual-size {
        display: none;
    }
    .lg-outer .lg {
        /* backdrop-filter: blur(3px); */
    }
</style>

<script>
    

    let countFiles = 1;
    const body = document.body;
    const typeFileArea = ["txt", "doc", "docx", "ods", "jpg", "jpeg", "png"];

    $(body).on("click", ".b-form__file-attach", function () {
        const wrapFiles = $(".b-form__files");
        let newFileInput;

        countFiles = wrapFiles.data("count-files") + 1;
        wrapFiles.data("count-files", countFiles);

        newFileInput =
          `${
            "" +
            '<div class="b-form__file">' +
            '<input class="b-form__file-input" data-test-id="feedback-file-input" type="file" name="file-'
          }${countFiles}" id="file-${countFiles}">` +
          `<div class="b-form__file-item">` +
          `<img src="${window.CDN}/static/images/icons/file_logo.png" alt="" width="16" height="16">` +
          `<span class="b-form__file-name">Close.png</span>` +
          `<span class="b-form__file-size">48 K</span>` +
          `<span class="b-form__file-del">` +
          `<img src="${window.CDN}/static/images/icons/file_del.png" alt="" width="12" height="13">` +
          `</span>` +
          `</div>` +
          `</div>`;
        wrapFiles.prepend(newFileInput);

        $(`.b-form__file-input[name="file-${countFiles}"]`).click();
    });

    document.body.addEventListener('change', function (event) {
        if (event.target && event.target.type === 'file') {
            const input = event.target;
            const valText = input.value;
            const fileName = valText.split(/(\\|\/)/g).pop();
            const fileItem = input.parentElement.querySelector('.b-form__file-item');
            const beginSlice = fileName.lastIndexOf(".") + 1;
            const typeFile = fileName.slice(beginSlice);
            const size = Math.floor(input.files[0].size / 1024);

            fileItem.querySelector('.b-form__file-name').textContent = fileName;

            const fileSizeElement = fileItem.querySelector('.b-form__file-size');
            fileSizeElement.textContent = `${size} Kb`;
            fileSizeElement.dataset.size = size;

            const formOpened = document.querySelector('.b-form--opened');
            const overlay = document.querySelector('.b-forms__overlay');
            if (formOpened) {
                overlay.style.minHeight = `${formOpened.offsetHeight + 100}px`;
            }

            if (valText !== '') {
                for (let i = 0; i < typeFileArea.length; i++) {
                    if (typeFile === typeFileArea[i]) {
                        input.parentElement.classList.add('has-mach');
                        break;
                    }
                }
            } else {
                fileItem.classList.add('hide-btn');
            }

            if (!input.parentElement.classList.contains('has-mach')) {
                input.parentElement.classList.add('error');
            }

            input.parentElement.classList.add('b-form__file--show');

            isFilesFieldValid(document.querySelector('.feedback-form'));
        }
    }, false);

    document.body.addEventListener('click', function (event) {
        if (event.target.closest('.b-form__file-del')) {
            const elem = event.target.closest('.b-form__file');
            elem.style.display = 'none';

            setTimeout(() => {
                elem.remove();
                isFilesFieldValid(document.querySelector('.feedback-form'));
            }, 400);
        }
    }, false);


    
    document.querySelectorAll('.b-form__close, .b-forms__overlay').forEach(element => {
        element.addEventListener('click', function(e) {
            document.querySelectorAll('.b-forms').forEach(el => el.classList.remove('b-forms--opened'));
            document.querySelectorAll('.b-form').forEach(el => el.classList.remove('b-form--opened', 'b-form--submitted'));
            document.body.classList.remove('modal-open');
        });
    });


    function close_window_by_ESC(event) {
        const ESC_key_code = 27;
        if (event.keyCode === ESC_key_code) {
            // Click on close button
            document.querySelector(".b-form__close").click();
        }
    }

    document.addEventListener(
        "keydown",
        function (event) {
            close_window_by_ESC(event);
        },
        false
    );

    document.addEventListener('DOMContentLoaded', function() {
        const openFormElements = document.querySelectorAll('.openform');

        openFormElements.forEach(function(element) {
            element.addEventListener('click', function(e) {
                const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;

                document.body.style.paddingRight = `${scrollbarWidth}px`;
                const bHeader = document.querySelector('.b-header');
                if (bHeader) {
                    bHeader.style.paddingRight = `${scrollbarWidth}px`;
                }

                e.preventDefault();

                const form = this.dataset.form;
                openForm(form);
            });
        });
    });

    
    function pressFormField(field, event) {
        let fieldId = $(field).attr("id");
        let formSubmitButton = getFormSubmitButtonByFieldId(fieldId);
        if (formSubmitButton) {
            let isFormInvalid = !formSubmitButton.hasClass("active_button");

            if (isEnterPressed(event) && isFormInvalid) {
                event.preventDefault();
                return false;
            }
        }
    }
    
    let ready = function () {
        if (window.innerWidth >= 768) {
            window.addEventListener('scroll', function () {
                if (window.scrollY > 25) {
                    document.querySelectorAll('.b-totop').forEach(function (element) {
                        element.classList.add('b-totop--visible');
                    });
                } else {
                    document.querySelectorAll('.b-totop').forEach(function (element) {
                        element.classList.remove('b-totop--visible');
                    });
                }
            });

            document.querySelector('.b-totop').addEventListener('click', function () {
                window.scrollTo({
                    top: 0,
                    behavior: 'smooth'
                });
            });
        }

        handleAnchor();
    };

    document.addEventListener("DOMContentLoaded", ready);

    function isEnterPressed(event) {
        return event.keyCode === 13;
    }

    function isFormFieldForFiles(formField) {
        return formField.hasClass("b-form__input--withfile");
    }

    function isObjectEmpty(obj) {
        if (obj === undefined) return true;
        return Object.keys(obj).length === 0;
    }

    function showFormFieldAsInvalid(formField, error) {
      let formFieldParent = $(formField).parent();
      formFieldParent.addClass("error");

      let cor_error;

      try{
        cor_error = error.join(' ')
      }catch{
        cor_error = error
      }

      if (isFormFieldForFiles(formFieldParent)) {
        // Add error info to field parent since the error won't fit with the file field
        $(formFieldParent).after(`<div class=\"error ajax-clean-after\"><img src=\"${window.CDN}/static/images/icons/error.png\"> ${cor_error}</div>`);
      } else {
        $(formField).after(`<div class=\"error ajax-clean-after\"><img src=\"${window.CDN}/static/images/icons/error.png\"> ${cor_error}</div>`);
      }
    }

    function deactivateButton(button) {
        button.removeClass("active_button");
        button.addClass("inactive_button");
        button.prop("disabled", true);
    }

    function activateButton(button) {
        button.removeClass("inactive_button");
        button.removeClass("b-slider__form-button--inactive");
        button.addClass("active_button");
        button.prop("disabled", false);
    }

    function addFieldsInfoToFormData(formData, formFields, form) {
        // Email id used everywhere
        formData.append("email", form.find('[name="email"]').val());

        formFields.forEach(function (field) {
            if (field === "license_type") {
                // For validation, it does not matter the
                // type of license will be an enterprise or a team
                formData.append(field, "team");
            } else {
                let fieldInput = form.find(`[name="${field}"]`)[0];
                let fieldValue = '';
                if (fieldInput.type === 'checkbox') {
                    fieldValue = fieldInput.checked;
                } else {
                    fieldValue = fieldInput.value.trim();
                }
                formData.append(field, fieldValue);
            }
        });
    }

    function isFileHasInvalidExtension(fileName) {
        return fileName.endsWith(".i") || fileName.endsWith(".exe");
    }

    function getTotalSizeOfAllFiles(sizesOfAllFiles) {
        let totalSizeOfAllFiles = 0;

        for (let i = 0; i < sizesOfAllFiles.length; i++) {
            let currentFileSize = parseInt(sizesOfAllFiles[i].textContent);
            totalSizeOfAllFiles += currentFileSize;
        }

        return totalSizeOfAllFiles;
    }

    function getFileExtension(fileName) {
        return fileName.substr(fileName.lastIndexOf(".") + 1);
    }


    function isWholeFormValid(form) {
        let isFormValid;

        if ($(form).hasClass("feedback-form")) {
            isFormValid =
                window.isFieldsOtherThanFilesValid && window.isFieldForFilesValid;
        } else {
            isFormValid = window.isFieldsOtherThanFilesValid;
        }

        return isFormValid;
    }

    function addErrorsInfoForField(field, formErrors) {
        formFieldError = formErrors[field.attr("name")];
        showFormFieldAsInvalid(field, formFieldError);
    }

    function deleteOldErrorsInfoForField(field, formFieldErrorBlock) {
        if ($(field).siblings(".ajax-clean-after").html() !== undefined) {
            $(field).siblings(".ajax-clean-after").remove();
        } else {
            formFieldErrorBlock.remove();
        }
    }

    function addNewErrorsInfoForField(field, formErrors) {
        if (formErrors === undefined) return;
        if ($(field).attr("type") === "checkbox") return;
        // If field has error
        if ($(field).attr("name") in formErrors) {
            addErrorsInfoForField($(field), formErrors);
            $(field).parent().removeClass("success");
        } else {
            $(field).parent().removeClass("error");
            $(field).css("border-color", "");
            $(field).parent().addClass("success");
        }

        if ($(field).attr("name") === "promo") {
            if (
                $(field).attr("name") in formErrors ||
                $(field).val().trim().length === 0
            ) {
                $(".promocode-alert").hide();
            } else {
                $(".promocode-alert").show();
            }
        }
    }

    function getFormData(form) {
        let formData = new FormData();
        let formFields = [];

        // Subscribe
        if (form.hasClass("b-blog__sub-form")) {
            formData.append("template", "subscribe");
            formFields = ["tp", "agree_checkbox"];
        }

        // Trial (Footer and normal) form
        if (
            form.hasClass("trial-form") ||
            form.hasClass("trial-footer-form") ||
            form.hasClass("product-trial") ||
            form.data("form") === "trial"
        ) {
            formData.append("template", "trial");
            formFields = ["promo", "license_type","agree_checkbox"];
        }

        // Feedback form
        else if (form.hasClass("feedback-form") || form.hasClass("docs-feedback")) {
            formData.append("template", "fb");
            formFields = ["message", "firstname", "lastname", "agree_checkbox"];
        }
        // Competition form
        else if (form.hasClass("competition-form")) {
            formData.append("template", "competition");
            formFields = ["competition", "name", "surname"];
        }

        // Demo form
        else if (form.hasClass("demo-form")) {
            formData.append("template", "demo");
            formFields = [
                "firstname",
                "lastname",
                "phone",
                "company",
                "position",
                "message",
            ];
        }

        // Order form
        else if (form.hasClass("order-form") || form.hasClass("product-order")) {
            formData.append("template", "order");
            formFields = [
                "message",
                "firstname",
                "lastname",
                "currency",
                "is_renew",
                "is_reseller",
                "agree_checkbox",
            ];
        }

        // MVP form
        if (form.hasClass("mvp-license-form")) {
            formData.append("template", "mvp");
            formFields = ["message", "firstname", "lastname", "github"];
        }

        // Open-source form
        if (form.hasClass("open-source-license-form")) {
            formData.append("template", "open-source");
            formFields = ["message", "firstname", "lastname", "github"];
        }

        // Early-access form
        if (form.hasClass("early-access-form")) {
            var checkbox = $(this).find("input[type=checkbox]");
            formData.append("template", "early-access");
        }

        // For managers trial form
        if (form.hasClass("trial-form-for-managers")) {
            formData.append("template", "trial-for-managers");
            formData.append("promo", "sast");
            formFields = ["license_type"];
        }

        // For managers trial footer form
        if (form.hasClass("trial-footer-for-managers-form")) {
            formData.append("template", "trial-footer");
            formData.append("promo", "sast");
            formData.append("license_type", "enterprise");
        }

        addFieldsInfoToFormData(formData, formFields, form);

        return formData;
    }

    function debounce(callee, timeoutMs = 300) {
        return function perform(...args) {
            let previousCall = this.lastCall;

            this.lastCall = Date.now();

            if (previousCall && this.lastCall - previousCall <= timeoutMs) {
                clearTimeout(this.lastCallTimer);
            }
            this.lastCallTimer = setTimeout(() => callee(...args), timeoutMs);
        };
    }

    function handleAnchor() {
        const MODAL_ANCHORS = ["sha-256"];
        const anchor = window.location.hash.toLowerCase().replace("#", "");

        if (!MODAL_ANCHORS.includes(anchor)) {
            return;
        }

        const anchorElem = document.getElementById(anchor);

        if (!anchorElem) {
            return;
        }

        anchorElem.click();
    }

    function replaceNonBreakingHyphen(str) {
        return str.replace(/‑/gm, "-");
    }

    window.addEventListener("copy", (event) => {
        event.preventDefault();

        const text = document.getSelection().toString();
        const replacedText = replaceNonBreakingHyphen(text)
        event.clipboardData.setData("text/plain", replacedText);
    });

    
    window.lang = 'ru';
    window.isFieldForFilesValid = true;
    window.addEventListener("keydown",function (e) {
        if (e.keyCode === 114 /* F3 */ ||
            (e.ctrlKey && e.keyCode === 70) /* ctrl+f*/  ||
            (e.metaKey && e.keyCode === 70) /* cmd+f */)
        {
            document.querySelectorAll('.moretext input[type="checkbox"]').forEach(checkbox => {
                checkbox.checked = true;
            });

            const menuItems = document.querySelectorAll('.b-leftmenu__item');
            menuItems.forEach(item => {
                if (item.querySelector('.b-leftmenu__items--inner')) {
                    item.classList.add('b-leftmenu__item--opened');
                }
            });
        }
    });

    const FORM_PREFIX_AND_NAME = {
        "ajax_trial_form_": "trial-form",
        "ajax_feedback_form_": "feedback-form",
        "ajax_trial_footer_form_": "trial-footer-form",
        "ajax_order_form_": "order-form",
        "ajax_mvp_form_": "mvp-license-form",
        "ajax_open_source_form_": "open-source-license-form",
        "ajax_early_access_form_": "early-access-form",
        "ajax_for_managers_trial_footer_form_": "trial-footer-for-managers-form",
        "ajax_trial_for_managers_form_": "trial-form-for-managers",
        "ajax_demoform_": "demo-form",
        "ajax_producttrialform_": "product-trial",
        "ajax_product_order_form_": "product-order",
        "ajax_whatsnew_form_": "b-blog__sub-form",
        "ajax_competition_form_": "competition-form",
        "ajax_docs_feedback_form_": "docs-feedback",
    };

    // Example: ajax_product_order_form_ or ajax_feedback_form_
    const FORM_PREFIX_REGULAR_EXPRESSION = new RegExp("ajax_(.+)form_");

    const FILES_SIZE_ERROR = "Размер приложенных файлов больше 20 мегабайт";

    function isFormFieldValid(field, isOnInputEvent = true) {
        const form = $(field).parents("form");
        let formData = getFormData(form);

        $.ajax({
            url: "https://pvs-studio.ru/ru/forms/validate_form_field/",
            type: 'POST',
            dataType: "json",
            cache: false,
            contentType: false,
            processData: false,
            data: formData,
            success: function (data) {
                let formErrors = data.errors;
                let fieldParent = $(field).parent();
                let formFieldErrorBlock = fieldParent.siblings('.ajax-clean-after');
                window.isFieldsOtherThanFilesValid = isObjectEmpty(formErrors);

                // If field empty after page loaded
                if (!isOnInputEvent && $(field).val() === '') {
                    fieldParent.removeClass('error');
                    fieldParent.find('.ajax-clean-after').remove();
                } else {
                    deleteOldErrorsInfoForField(field, formFieldErrorBlock);
                    addNewErrorsInfoForField(field, formErrors);
                }

                let isFormValid = isWholeFormValid(form);

                const formSubmitButton = $(form).find("[type='submit']");

                if (formSubmitButton){
                    function activateOrDeactivateButton(button, isFormValid) {
                        if (isFormValid) {
                            button.prop("disabled", false);
                        } else {
                            button.prop("disabled", true);
                        }
                    }

                    activateOrDeactivateButton(formSubmitButton, isFormValid);
                }

                $(field).change();
            }
        });
    }

    let isFormFieldValidDebounce = debounce(isFormFieldValid)

    function isFilesFieldValid(form) {
        window.isFieldForFilesValid = true;
        let sizesOfAllFiles = Array.from(form.getElementsByClassName("b-form__file-size"));
        let namesOfAllFiles = Array.from(form.getElementsByClassName("b-form__file-name"));
        let totalSizeOfAllFiles = getTotalSizeOfAllFiles(sizesOfAllFiles);
        let formSubmitButton = form.querySelector('[type="submit"]');

        let filesField = document.getElementById("ajax_feedback_form_files");

        // Remove error info if any
        Array.from(filesField.parentElement.children).forEach(sibling => {
            if (sibling.classList.contains('ajax-clean-after')) {
                sibling.remove();
            }
        });

        // Check files extensions
        namesOfAllFiles.forEach(currentFileNameElement => {
            let currentFileName = currentFileNameElement.textContent;

            if (isFileHasInvalidExtension(currentFileName)) {
                let fileExtensionError = getFileExtensionError(currentFileName);

                showFormFieldAsInvalid(filesField, fileExtensionError);
                window.isFieldForFilesValid = false;
                return; // Exit loop on first invalid extension
            }
        });

        if (totalSizeOfAllFiles > 20480) {
            showFormFieldAsInvalid(filesField, FILES_SIZE_ERROR);
            window.isFieldForFilesValid = false;
        }

        let isFeedbackFormValid =
            window.isFieldForFilesValid && window.isFieldsOtherThanFilesValid;

        if (isFeedbackFormValid) {
            formSubmitButton.disabled = false; // Activate button
        } else {
            formSubmitButton.disabled = true; // Deactivate button
        }
    }

    function openForm(form) {
        if ($('form').is(`form[data-form="${form}"]`)) {
            const formElement = $(`form[data-form="${form}"]`);
            formElement.addClass('b-form--opened');
            $('.b-forms').addClass('b-forms--opened');
            $('body').addClass('modal-open');
            $('.b-forms__overlay').css('min-height', formElement.height() + 100);
        }
    }
</script>

<script>
    

    let urlParams = function (name) {
        var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (results == null) {
            return null;
        } else {
            return decodeURI(results[1]) || 0;
        }
    }

    is_from_standalone = urlParams('is_from_standalone')

    if (is_from_standalone === 'true') {
        $('.b-header, .b-footer, #footer_form').hide();
        $('.b-content').css('padding-top', '0');

        $('.b-blog__tab.errors').hide()

        $('.b-blog__tabs a, .b-blog__filters a, .b-blog__item a, .b-breadcrumbs__item a, .b-pagen__content a, .content-footer-tags a, .content-tags-items a').each(function () {
            let new_href = $(this).attr('href');
            if ($(this).attr('href').indexOf('?') > -1) {
                new_href += '&is_from_standalone=true';
            } else {
                new_href += '?is_from_standalone=true';
            }
            $(this).attr('href', new_href);
        })
    }
</script>

<script>
    let ANCHOR_REGEX = /^#[^ ]+$/;

    function isMatchToRegex(element, regex) {
        return regex.test(element);
    }

    function scrollToAnchor(anchor) {
        if (anchor === '#show_comments') return;

        let anchorWithoutLattice = anchor.slice(1);
        let anchorElement = $(`#${anchorWithoutLattice}`);

        if (anchorElement.offset()) {
            const headerElem = document.querySelector(".header");
            const headerElemHeight = headerElem ? headerElem.offsetHeight : 0;

            $("html,body").scrollTop(anchorElement.offset().top - 70 - headerElemHeight);
        }

        return false;
    }

    window.addEventListener("load", function (){
        try{
            $('html, body').animate({scrollTop: $(window.location.hash).offset().top - 96}, 100);
        }catch{}
    });

    let correct_query = "?search=";
    let incorrect_query = "?search=&ncq=true";
    let is_mouse_wheel_pressed = function (event_object) {
        return event_object.which === 2
    };

    $('.b-blog__incorrect_query_ref').on(
        {
            'click': function (event_object) {
                window.location.search = incorrect_query
            },
            'mousedown': function (event_object) {
                if (is_mouse_wheel_pressed(event_object)) {
                    window.open(event_object.target.href + incorrect_query, '_blank');
                }
            }
        }
    );

    $('.b-blog__correct_query_ref').on(
        {
            'click': function (event_object) {
                window.location.search = correct_query
            },
            'mousedown': function (event_object) {
                if (is_mouse_wheel_pressed(event_object)) {
                    window.open(event_object.target.href + correct_query, '_blank');
                }
            }
        }
    );

    $('.b-search__btn').click(function () {
        $(this).parents('form').submit()
    })
</script>

<script defer="defer" src="https://cdn.pvs-studio.ru/static/vendor.js"></script>

<script>

    window.addEventListener('load', function() {
        const pageAnchor = window.location.hash;

        if (isMatchToRegex(pageAnchor, ANCHOR_REGEX)) {
            scrollToAnchor(pageAnchor);
        }
    });

    function to_next_div(selector, change_scrolltop_on = 0) {
        const element = document.querySelector(selector);
        if (!element) return;

        const targetPosition = element.getBoundingClientRect().top +
                              window.scrollY -
                              change_scrolltop_on;

        const startPosition = window.scrollY;
        const distance = targetPosition - startPosition;
        const duration = 100;
        let startTime = null;

        function animateScroll(currentTime) {
            if (!startTime) startTime = currentTime;
            const timeElapsed = currentTime - startTime;
            const progress = Math.min(timeElapsed / duration, 1);

            window.scrollTo(0, startPosition + distance * progress);

            if (timeElapsed < duration) {
                window.requestAnimationFrame(animateScroll);
            }
        }

        window.requestAnimationFrame(animateScroll);
    }

    function readCookie(name) {
        var matches = document.cookie.match(new RegExp(
            "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }
    let promocode = readCookie('promocode')

    
        if (promocode) {
            $('input[name="promo"][type!=hidden]').val(promocode)
            $('input[data-name="promocode"][type!=hidden]').val(promocode)
            $('.promocode-alert').show()
        }
    


    function getFileExtensionError(fileName){
        let fileExtension = getFileExtension(fileName);
        let fileExtensionError = "Не получается приложить файл " + fileName + "." +
            "<br>Расширение " + fileExtension + " не поддерживается.";

        return fileExtensionError;
    }

    function recaptchaSubmit(token) { //todo: remove
        window.captcha = token;
        $('.submit-now').submit();
        return true;
    }

    $('form.ajax-form').submit(function (e) {
        e.preventDefault();

        var parent = $(this).find('input').parents('form')

        parent.css("opacity", 0.7).find('*').prop('readonly', true)
        parent.find('input[type="submit"]').prop('disabled', true)

        let form = $(this)
        const formPlainJs = this;

        data = new FormData();

        form.addClass('try')

        let ajax_prefix;

        if ($(this).hasClass('feedback-form')) {
            var cnt = 2;

            let inputs = $(this).find('.b-form__file-input');

            for (let i = 0; i < inputs.length; i++) {
                jQuery.each(inputs[i].files, function (i, file) {
                    data.append(file.name, file);
                    cnt++
                });
            }

            data.append('email', $(this).find('[name="email"]').val());
            data.append('message', $(this).find('[name="message"]').val());
            data.append('firstname', $(this).find('[name="firstname"]').val());
            data.append('lastname', $(this).find('[name="lastname"]').val());
            data.append('template', 'fb');
            ajax_prefix = 'ajax_feedback_form_'
        }
        if ($(this).hasClass('demo-form')) {
            data.append('email', $(this).find('[name="email"]').val());
            data.append('message', $(this).find('[name="message"]').val());
            data.append('firstname', $(this).find('[name="firstname"]').val());
            data.append('lastname', $(this).find('[name="lastname"]').val());
            data.append('template', 'demo');
            ajax_prefix = 'ajax_demoform_'
        }
        if ($(this).hasClass('competition-form')) {
            data.append('email', $(this).find('[name="email"]').val());
            data.append('name', $(this).find('[name="name"]').val());
            data.append('surname', $(this).find('[name="surname"]').val());
            data.append('competition', $(this).find('[name="competition"]').val());
            data.append('template', 'competition');
            ajax_prefix = 'ajax_competition_'
        }
        if ($(this).hasClass('order-form')) {
            
                try{
                    if($(this).find('[name="is_step_2"]').val() === 'true'){
                        data.append('is_step_2', $(this).find('[name="is_step_2"]').val());
                    }
                } catch {}
            

            if($(this).find('[name="instance_id"]').val()){
                data.append('name', $(this).find('[name="name"]').val());
                data.append('phone', $(this).find('[name="phone"]').val());
                data.append('is_telegram_by_phone', $(this).find('[name="is_telegram_by_phone"]').val());
                data.append('telegram', $(this).find('[name="telegram"]').val());
                data.append('request_type', $(this).find('[name="request_type"]').val());
                data.append('instance_id', $(this).find('[name="instance_id"]').val());
                data.append('template', 'step_2');
            }else{
                data.append('template', 'order');
            }
            data.append('currency', $(this).find('[name="currency"]').val());
            data.append('email', $(this).find('[name="email"]').val());
            data.append('message', $(this).find('[name="message"]').val());
            data.append('firstname', $(this).find('[name="firstname"]').val());
            data.append('lastname', $(this).find('[name="lastname"]').val());
            data.append('is_renew', form.find('input[name="is_renew"]').val())
            data.append('is_reseller', form.find('input[name="is_reseller"]').val())
            ajax_prefix = 'ajax_order_form_'
        }
        if ($(this).hasClass('trial-form') || $(this).data("form") === "trial") {
            
                try{
                    if($(this).find('[name="is_step_2"]').val() === 'true'){
                        data.append('is_step_2', $(this).find('[name="is_step_2"]').val());
                    }
                } catch {}
            

            if($(this).find('[name="instance_id"]').val()){
                data.append('name', $(this).find('[name="name"]').val());
                data.append('phone', $(this).find('[name="phone"]').val());
                data.append('is_telegram_by_phone', $(this).find('[name="is_telegram_by_phone"]').val());
                data.append('telegram', $(this).find('[name="telegram"]').val());
                data.append('request_type', $(this).find('[name="request_type"]').val());
                data.append('instance_id', $(this).find('[name="instance_id"]').val());
                data.append('template', 'step_2');
                ajax_prefix = 'ajax_step2_form_'
            }else{
                data.append('template', 'trial');
                ajax_prefix = 'ajax_trial_form_'
            }

            data.append('email', $(this).find('[name="email"]').val());
            data.append('promo', $(this).find('[name="promo"]').val());
            data.append('agree_checkbox', $(this).find('[name="agree_checkbox"]').val());

            data.append('special', $(this).find('[name="special"]').val());
            if ($(this).find('[name="license_type"]:checked').val()) {
                data.append('license_type', $(this).find('[name="license_type"]:checked').val());
            } else {
                data.append('license_type', 'team');
            }
        }
        if ($(this).hasClass('mvp-license-form')) {
            data.append('email', $(this).find('[name="email"]').val());
            data.append('firstname', $(this).find('[name="firstname"]').val());
            data.append('lastname', $(this).find('[name="lastname"]').val());
            data.append('github', $(this).find('[name="github"]').val());
            data.append('message', $(this).find('[name="message"]').val());
            data.append('template', 'mvp');
            ajax_prefix = 'ajax_mvp_form_'
        }
        if ($(this).hasClass('trial-form-for-managers')) {
            data.append('template', 'trial-for-managers');
            data.append('email', $(this).find('[name="email"]').val());
            data.append('promo', $(this).find('[name="promo"]').val());
            data.append('license_type', $(this).find('[name="license_type"]').val());
            data.append('agree_checkbox', $(this).find('[name="agree_checkbox"]').val());
            ajax_prefix = 'ajax_trial_for_managers_form_'
        }
        if ($(this).hasClass('open-source-license-form')) {
            data.append('email', $(this).find('[name="email"]').val());
            data.append('firstname', $(this).find('[name="firstname"]').val());
            data.append('lastname', $(this).find('[name="lastname"]').val());
            data.append('github', $(this).find('[name="github"]').val());
            data.append('message', $(this).find('[name="message"]').val());
            data.append('template', 'open-source');
            ajax_prefix = 'ajax_open_source_form_'
        }
        if ($(this).hasClass('early-access-form')) {
            var checkbox = $(this).find("input[type=checkbox]");
            $.each(checkbox, function (key, val) {
                if ($(val).is(':checked')) {
                    data.append($(val).attr('name'), $(val).attr('value'))
                }
            });

            data.append('email', $(this).find('[name="email"]').val());
            data.append('template', 'early-access');
            ajax_prefix = 'ajax_early_access_form_'
        }

        let tmp = $('.ajax-clean-after');
        tmp.parent().removeClass('error')
        tmp.remove();

        var totalSize = 0;

        let files = form.find('.b-form__file-size');
        for (let i = 0; i < files.length; i++) {
            let cursize = parseInt(files[i].textContent.replace(' Kb', ''))
            totalSize += cursize;
        }

        let names = form.find('.b-form__file-name');

        for (let i = 0; i < names.length; i++) {
            if (names[i].textContent.endsWith('.i') || names[i].textContent.endsWith('.exe')) {
                let el = document.getElementById('ajax_feedback_form_files')
                el.parentElement.classList.add('error')
                var ext = names[i].textContent.substr(names[i].textContent.lastIndexOf('.') + 1);

                el.insertAdjacentHTML('afterend',
                    
                            '<div class="error ajax-clean-after"><img src="https://cdn.pvs-studio.ru/static/images/icons/error.png"> Не получается приложить файл "' + names[i].textContent + '".<br/> Расширение ' + ext + ' не поддерживается.</div>'
                    
            )

                parent.css("opacity", 1).find('*').prop('readonly', false)
                parent.find('input[type="submit"]').prop('disabled', false)

                return false;
            }
        }

        if (totalSize > 20480) {
            let el = document.getElementById('ajax_feedback_form_files')
            el.parentElement.classList.add('error')
            el.insertAdjacentHTML('afterend',
                "<div class=\"error ajax-clean-after\"><img src=\"https://cdn.pvs-studio.ru/static/images/icons/error.png\"> Размер приложенных файлов больше 20 мегабайт </div>"
            );

            parent.css("opacity", 1).find('*').prop('readonly', false)
            parent.find('input[type="submit"]').prop('disabled', false)

            return false;
        }

        $.ajax({
            url: $(this).attr('action'),
            type: $(this).attr('method'),
            dataType: "json",
            cache: false,
            contentType: false,
            processData: false,
            data: data,
            success: function (data) {
                if (!("/ru/blog/posts/".includes("/try-free/") || "/ru/blog/posts/".includes("/order/"))) {
                    for (let error in data.errors) {
                        let el = document.getElementById(ajax_prefix + error);
                        if(el){
                            el.parentElement.classList.add('error');
                            if (el.parentElement.classList.contains('b-form__input--withfile')) {
                                el.parentElement.insertAdjacentHTML('afterend',
                                    "<div class=\"error ajax-clean-after\"><img src=\"https://cdn.pvs-studio.ru/static/images/icons/error.png\"> " + data.errors[error] + "</div>"
                                );
                            } else {
                                el.insertAdjacentHTML('afterend',
                                    "<div class=\"error ajax-clean-after\"><img src=\"https://cdn.pvs-studio.ru/static/images/icons/error.png\"> " + data.errors[error] + "</div>"
                                );
                            }
                        }else{
                            if(error === '__all__') {
                                form.find('.for-all-errors').html(`${data.errors[error]}`);
                            }
                        }
                    }
    
                    if (data.is_send) {
                        form.removeClass('try')
                        form.removeClass('submit-now')
                        if (form.hasClass('competition-form')) {
                            $('.competition__content').html(data.html)
                        } else {
                            const bFormContent = form.find('.b-form__content');
                            if (bFormContent.length > 0) {
                                form.find('.b-form__content').html(data.html)
                            } else {
                                form.html(data.html);
                            }
                        }
                    }
    
                    parent.css("opacity", 1).find('*').prop('readonly', false)
                    parent.find('input[type="submit"]').prop('disabled', false)
                } else {
                    for (const errorFieldName in data.errors) {
                        if(errorFieldName === '__all__') {
                            form.find('.for-all-errors').html(`${data.errors[errorFieldName]}`);
                        } else{
                            const input = formPlainJs.querySelector(`[name=${errorFieldName}]`);
                            const parent = input.parentElement;
                            parent.classList.add("error");

                            input.insertAdjacentHTML('afterend',
                                /*html*/`<div class="error ajax-clean-after"><img src="https://cdn.pvs-studio.ru/static/images/icons/error.png"/>${data.errors[errorFieldName]}</div>`
                            );
                        }
                    }

                    if (data.is_send) {
                        form.removeClass('try')
                        form.removeClass('submit-now')
                        if (form.hasClass('competition-form')) {
                            $('.competition__content').html(data.html)
                        } else {
                            const bFormContent = form.find('.b-form__content');
                            if (bFormContent.length > 0) {
                                form.find('.b-form__content').html(data.html);
                            } else {
                                form.html(data.html);
                            }
                        }
                    }

                    $(formPlainJs).css("opacity", 1).find('*').prop('readonly', false)
                }
                
            }
        });

        return false;
    });

    $('form.ajax-footer-form').submit(function (e) {
        e.preventDefault();

        var parent = $(this).find('input').parents('form')

        parent.css("opacity", 0.7).css("cursor", "wait").find('*').prop('readonly', true).css("cursor", "wait")
        parent.find('input[type="submit"]').prop('disabled', true)

        let form = $(this)

        form.addClass('try')

        data = new FormData();

        if ($(this).hasClass('trial-footer-for-managers-form')) {
            data.append('promo', 'sast');
            data.append('license_type', 'enterprise');
        } else {
            data.append('promo', $(this).find('[name="promo"]').val());
            data.append('license_type', $(this).find('[name="license_type"]').val());
        }

        data.append('token', form.find('input[name="token_csrf"]').val())
        data.append('template', 'trial-footer');
        data.append('email', $(this).find('[name="email"]').val());
        data.append('g-recaptcha-response', window.captcha);

        $.ajax({
            url: $(this).attr('action'),
            type: $(this).attr('method'),
            dataType: "json",
            cache: false,
            contentType: false,
            processData: false,
            data: data,
            success: function (data) {
                $('.ajax-clean-after').remove()

                for (let error in data.errors) {
                    let el = document.getElementById('ajax_trial_footer_form_' + error)
                    el.parentElement.classList.add('error')
                    el.insertAdjacentHTML('afterend',
                        "<div class=\"error ajax-clean-after\"><img src=\"https://cdn.pvs-studio.ru/static/images/icons/error.png\"> " + data.errors[error] + "</div>"
                    );
                }

                if (data.is_send) {
                    form.removeClass('try')
                    form.removeClass('submit-now')

                    form.find('.footer-ajax').html(data.html)
                }
                parent.css("opacity", 1).css("cursor", "auto").find('*').prop('readonly', false).css("cursor", "auto")
                parent.find('input[type="submit"]').prop('disabled', false)
            }
        });

        return false;
    });
</script>

    <script defer src="https://cdn.pvs-studio.ru/static/vite/js/formsValidate.js"></script>
    
        <script>
                _tmr.push({ type: 'reachGoal', id: 3598243, goal: 'Blog_Visit'});
        </script>
    

    <script>
        $('.b-blog__search-input form').on("submit", function (e) {
            if ($(this).find('input').val() === '') e.preventDefault()
        })

        $(".b-blog__search-input__btn").on("click", function () {
                $(this).parents().submit()
            }
        )
    </script>


<script>
    var arrow = function () {
        $(".to-next-div-arrow-small")
            // 500 - time for animation
            .animate({
                "top": "-10px",
                "opacity": 0,
            }, 500)

            // arguments.callee - makes the animation infinite
            .animate({
                "top": 0,
                "opacity": 1,
            }, 500, arguments.callee)
    }

    arrow()

    function $_GET(key) {
        var p = window.location.search;
        p = p.match(new RegExp(key + '=([^&=]+)'));
        return p ? p[1] : false;
    }

    function mobileCheck() {
        let check = false;
        (function (a) {
            if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
        })(navigator.userAgent || navigator.vendor || window.opera);
        return check;
    }

    $(document).ready(function () {
        if ($_GET('promo')) {
            SCROLL_TIME = 2000;

            $('input[name="promo"], input[data-name="promocode"]').val($_GET('promo'))
            $('.promocode-alert').show()
            $(`input[name="promo"]`).trigger("input")

            const pageUrl = "/ru/blog/posts/"
            
            if (!pageUrl.includes("try-free")) {
                $('html, body').animate({
                    scrollTop: $("#footer_form").offset().top - $("header.header").height()
                }, SCROLL_TIME);
    
                setTimeout(() => {
                    $('#footer_form .openform').click();
                }, SCROLL_TIME);
            }
        }

        if ($_GET('open_form')) {
            const form = $_GET('open_form');

            setTimeout(() => {
                $(`.openform[data-form="${form}"]`).click()
            }, 0);
        }
    })
</script>


        
    

<script>
    document.body.classList.add('loaded_hiding');
    $('table.table-striped').wrap('<div class="big-table"></div>');

    function resize_table_box() {
        $('.big-table').each(function () {
            var box_width = $(this).outerWidth();
            var table_width = $(this).children('table').prop('scrollWidth');
            $(this).removeClass('scroll-left');
            if (table_width > box_width) {
                $(this).addClass('scroll-right');
            } else {
                $(this).removeClass('scroll-right');
            }
        });
    }

    resize_table_box();
    $(window).on('resize', function () {
        resize_table_box();
    });

    $('.big-table table').on('scroll', function () {
        var parent = $(this).parent();
        if ($(this).scrollLeft() + $(this).innerWidth() >= $(this)[0].scrollWidth) {
            if (parent.hasClass('scroll-right')) {
                parent.removeClass('scroll-right');
            }
        } else if ($(this).scrollLeft() === 0) {
            if (parent.hasClass('scroll-left')) {
                parent.removeClass('scroll-left');
            }
        } else {
            if (!parent.hasClass('scroll-right')) {
                parent.addClass('scroll-right');
            }
            if (!parent.hasClass('scroll-left')) {
                parent.addClass('scroll-left');
            }
        }
    });

    $('.b-form__select-option').on('click', function () {
        const value = $(this).attr('data-value');
        $(this).parent().parent().find('input').val(value);

        if (!$(this).hasClass('b-form__select-option--selected')) {
            $(this).parent().parent().find('.b-form__select-option').removeClass('b-form__select-option--selected');
            $(this).addClass('b-form__select-option--selected');
        }
    });

    $('.b-command__item .b-command__item-img').each(function(){
        $(this).css('background-image', $(this).attr('bi'));
    });
</script>



</body>
</html>